Drone Flight Operations

ABSTRACT

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for sending a flight plan for execution by a drone, where the flight plan is adapted to a flight controller of the drone. Receiving flight data from the drone while the drone is executing the flight plan. Determining a modification to the flight plan based on the flight data received from the drone. Sending the modification to the flight plan to the drone while the drone is executing the flight plan, such that the drone executes the flight plan as modified by the modification.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of the filing date of U.S.Provisional Application No. 62/264,970, filed on Dec. 9, 2015; U.S.Provisional Application No. 62/279,155, filed on Jan. 15, 2016; and U.S.Provisional Application No. 62/301,728, filed on Mar. 1, 2016. Thecontents of U.S. Application Nos. 62/264,970, 62/279,155, and 62/301,728are incorporated herein by reference in their entirety.

BACKGROUND

Unmanned aerial vehicles (UAV), or “drones,” are increasingly used invarious applications including commercial, farming, scientific, searchand rescue, law enforcement, environmental conservation, andrecreational applications. Drones can be controlled either autonomously(e.g., by onboard computers) or by a pilot using a remote control unit.

SUMMARY

Implementations of the present disclosure include methods for executinga drone flight plan from a drone flight control platform. In someimplementations, methods include actions of sending a flight plan forexecution by a drone, where the flight plan is adapted to a flightcontroller of the drone. Receiving flight data from the drone while thedrone is executing the flight plan. Determining a modification to theflight plan based on the flight data received from the drone. Sendingthe modification to the flight plan to the drone while the drone isexecuting the flight plan, such that the drone executes the flight planas modified by the modification. Other implementations of this aspectinclude corresponding systems, apparatus, and computer programs,configured to perform the actions of the methods, encoded on computerstorage devices.

These and other implementations can each optionally include one or moreof the following features. In some implementations, the flight plan canbe agnostic to different types of drone flight controllers, and themethod can include converting the flight plan from an agnostic flightplan to a drone specific flight plan by adapting the agnostic flightplan to the flight controller of the drone. Sending the flight plan forexecution by the drone can include sending the drone specific flightplan to the drone.

In some implementations, the flight plan can include one or more ofsensor operations for a sensor package of the drone, a task, a pluralityof waypoints, and a flight profile between waypoints.

In some implementations, the flight profile can include one or more offlight times between waypoints, drone speed between waypoints, dronealtitude between waypoints, drone flight attitude, expected batterystate's, sensor configurations, and sensor operations.

In some implementations, the method includes receiving pre-flight data,determining that the drone cannot complete at least a portion of theflight plan based on the pre-flight data, generating a modified flightplan based on the flight plan and the pre-flight data, and sending themodified flight plan to the drone.

In some implementations, the pre-flight data can include one or more ofa location of the drone, battery status of the drone; environment data,and airspace data.

In some implementations, the method includes receiving other data thataffects the drone flight plan, determining a second modification to theflight plan based on third-party data, and sending the secondmodification to the flight plan to the drone while the drone isexecuting the flight plan, such that the drone executes the flight planas modified by the second modification.

In some implementations, the other data can include one or more ofweather data or airspace data.

In some implementations, the method includes sending a second flightplan for execution by a second drone, the second flight plan beingadapted to a flight controller of the second drone, where the flightplan and the second flight plan coordinate the flights of the drone andthe second drone within a location. The flight controller of the seconddrone can be different from the flight controller of the drone.

In some implementations, the second flight plan can be agnostic todifferent types of drone flight controllers. The method can includeconverting the second flight plan from an agnostic flight plan to asecond drone specific flight plan by adapting the agnostic flight planto the flight controller of the second drone. Sending the second flightplan for execution by the second drone can include sending the seconddrone specific flight plan to the second drone.

In some implementations, the method can include determining amodification to the second flight plan based on the modification to theflight plan, and sending the modification to the second flight plan tothe second drone while the second drone is executing the second flightplan, such that the second drone executes the second flight plan asmodified by the modification to the second flight plan.

In some implementations, the flight data can include one or more ofbattery status, drone speed, drone altitude, drone location, and sensordata.

In some implementations, the modification to the flight plan can includeadding or removing a waypoint.

In some implementations, the modification to the flight plan can includealtering a geographic location of a waypoint.

In some implementations, the modification to the flight plan can includealtering a flight profile between waypoints.

In some implementations, the method can include providing a graphicalinterface including a representation of at least a portion of the flightdata from the drone, for display to a user and concurrently with thedrone executing the flight plan.

In some implementations, the representation can include a representationof one or more of a location of the drone, a battery status of thedrone, a speed of the drone, and sensor data from the drone.

This specification also relates to controlling drone approaches totarget locations. Implementations of the present disclosure generallyrelate to controlling drone ascent and descent to and from a flightcorridor (e.g., flight in a “drone highway”). Implementations alsorelates to a device for guiding drone approaches to target locations.Implementations of the present disclosure relate to defining a droneapproach corridor and guiding drone ascent and descent to and within theapproach corridor from a flight corridor. More particularly,implementations of the present disclosure are directed to a device forguiding drone ascents from and descents to geographic locations withinpredefined drone approach corridors.

In general, innovative aspects of the subject matter described in thisspecification can be embodied in methods for controlling droneapproaches to target locations that include the actions of receiving arequest for a drone to enter a drone approach corridor to a geographiclocation, where a drone approach corridor is a defined volume ofairspace extending from an area above the geographic location to thegeographic location. Determining whether the drone approach corridor isavailable for the drone to enter. Sending a response that grants ordenies permission for the drone to enter the drone approach corridorbased on the determination of whether the drone approach corridor isavailable for the drone to enter. Other implementations of this aspectinclude corresponding systems, apparatus, and computer programs,configured to perform the actions of the methods, encoded on computerstorage devices.

In another general aspect, the subject matter described in thisspecification can be embodied in a system for controlling droneapproaches to target locations. The system includes one or more datastores that store data defining a plurality of drone approach corridors,and one or more computing devices coupled to the data stores and thathost a drone control platform configured to control drone usage of theplurality of drone approach corridors. Each drone approach corridor isdefined by a designated volume of airspace that extends from an areaabove a respective geographic location to the respective geographiclocation. In some implementations, the drone control platform cancontrol drone usage of the plurality of drone approach corridors byreceiving a request for a drone to enter a drone approach corridor,determining whether the drone approach corridor is available for thedrone to enter, and sending a response that grants or denies permissionfor the drone to enter the drone approach corridor based on thedetermination of whether the drone approach corridor is available forthe drone to enter.

These and other implementations can each optionally include one or moreof the following features. In some implementations, the drone approachcorridor can extend from a drone highway to the geographic location.

In some implementations, determining whether the drone approach corridoris available for the drone to enter can include determining that thedrone approach corridor is available for the drone to enter, and theresponse grants permission for the drone to enter the drone approachcorridor and includes data defining boundaries of the drone approachcorridor.

In some implementations, the drone approach corridor can includecollision avoidance protocols, and the response includes data definingthe collision avoidance protocols. In some implementations, thecollision avoidance protocols can include a stand-off distance from aground obstruction located at the geographic location.

In some implementations, the methods can include receiving sensor datafrom the drone that is captured while the drone is flying in the droneapproach corridor. Determining that the drone approach corridor shouldbe modified based on the sensor data, and modifying a boundary of thedrone approach corridor.

In some implementations, determining that the drone approach corridorshould be modified can include determining, from the sensor data, thatthere is an obstruction in at least a portion of the drone approachcorridor.

In some implementations, determining whether the drone approach corridoris available for the drone to enter can include determining that thedrone approach corridor is available for the drone to enter bydetermining that another drone is not present in the drone approachcorridor.

In some implementations, determining whether the drone approach corridoris available for the drone to enter can include determining that thedrone approach corridor is available for the drone to enter by:determining a time period that the drone is pre-schedule to enter thedrone approach corridor, and determining that a time of the request iswithin the time period.

In some implementations, determining whether the drone approach corridoris available for the drone to enter can include determining that thedrone approach corridor is available for the drone to enter bydetermining that another drone is not pre-scheduled to use the droneapproach corridor within a period of time from a time of the request.

In some implementations, determining whether the drone approach corridoris available for the drone to enter can include determining that thedrone approach corridor is not available for the drone to enter bydetermining that another drone is pre-scheduled to use the droneapproach corridor within a period of time from a time of the request.

In some implementations, determining whether the drone approach corridoris available for the drone to enter can include determining that thedrone approach corridor is not available for the drone to enter bydetermining that the drone approach corridor is obstructed.

In some implementations, determining whether the drone approach corridoris available for the drone to enter can include determining that thedrone approach corridor is not available for the drone to enter, and theresponse can identify a holding pattern for the drone to fly whileawaiting permission to enter the drone approach corridor.

In some implementations, determining whether the drone approach corridoris available for the drone to enter can include determining that thedrone approach corridor is not available for the drone to enter, and theresponse can identify a secondary drone approach corridor for the droneto enter.

In some implementations, the methods can include sending instructions tothe drone to control the flight of the drone in accordance with theresponse.

In some implementations, the instructions can include instructions toenter the drone approach corridor.

In some implementations, the instructions can include instructions tofly a holding pattern.

In some implementations, the instructions can include instructions toenter a secondary drone approach corridor.

In general, innovative aspects of the subject matter described in thisspecification can be embodied in methods for configuring an autonomousdrone landing device (ADLD) that include the actions of receiving sensordata that represents airspace above an ADLD, orientation data thatindicates an orientation of a landing pad associated with an ADLD, andlocation data that indicates a geographic location of the ADLD.Determining attributes to define a drone approach corridor based on thesensor data, the orientation data, and the location data. Registeringthe ADLD with a drone control platform. This and other implementationscan each optionally include one or more of the following features.

In some implementations, the drone approach corridor can extend from adrone highway to the landing pad associated with the ADLD.

In some implementations, the sensor data can include one or more imagesof the airspace.

In some implementations, the methods can include determining that theairspace above the ADLD is obstructed based on the sensor data andalerting a user that the airspace above the ADLD is obstructed inresponse to determining that the airspace above the ADLD is obstructed.

In some implementations, alerting the user that the airspace above theADLD is obstructed includes providing, for display on a user computingdevice, a notification that the airspace above the ADLD is obstructedand instructions for the user to relocate the ADLD.

In some implementations, the notification includes a graphicalrepresentation of a location of the obstruction with respect to the ADLDand a direction for the user to move the ADLD away from the obstruction.

In some implementations, alerting the user that the airspace above theADLD is obstructed includes activating an indicator on the ADLD tonotify the user that the airspace above the ADLD is obstructed and toindicate a direction in which to move the ADLD away from theobstruction.

In some implementations, the methods can include determining, based onthe orientation data, that the landing pad is not properly oriented fora drone to land on the landing pad, and alerting a user that the landingpad is not properly oriented in response to determining that the landingpad is not properly oriented.

In some implementations, alerting the user that the landing pad is notproperly oriented includes providing, for display on a user computingdevice, a notification that the landing pad is not properly oriented andinstructions for the user to correct the orientation of the landing pad.

In some implementations, the notification includes a graphicalrepresentation of a present orientation of the landing pad and acorrected orientation for the landing pad to guide the user incorrecting the orientation of the landing pad.

In some implementations, alerting the user that the landing pad is notproperly oriented includes activating an indicator on the ADLD to notifythe user that the landing pad is not properly oriented and to indicate adirection in which to move ADLD in order to correct the orientation ofthe landing pad.

In some implementations, registering the ADLD with a drone controlplatform includes sending, to the drone control platform, dataidentifying the ADLD and data defining the drone approach corridorassociated with the ADLD.

In some implementations, the data identifying the ADLD includes a serialnumber, a location of the ADLD, and an identity of a second ADLD toserve as a secondary ADLD for the ADLD.

In some implementations, the methods can include sending signals fromthe ADLD to the drone control platform that indicate that the ADLD isfunctioning properly after registering the ADLD.

In some implementations, the methods can include, after registering theADLD: determining that the airspace above the ADLD, and sending anotification to the drone control platform indicating that at least aportion of the drone approach corridor associated with the ADLD isunavailable for drones to enter in response to determining that theairspace above the ADLD is obstructed.

In another general aspect, the subject matter described in thisspecification can be embodied in methods for coordinating a droneapproach to a landing site with an autonomous drone landing device(ADLD) that include the actions of receiving an indication that a dronehas entered an airspace associated with an ADLD, the airspace beingdefined, in part, by a boundary. Receiving first data from a sensor ofthe ADLD that is configured to monitor the airspace associated with theADLD. Determining, based on the first data, a position of the drone withrespect to the boundary of the airspace associated with the ADLD.Communicating second data to the drone to guide the drone's flightwithin the airspace based on the determined position of the drone withrespect to the boundary of the airspace. These and other implementationscan each optionally include one or more of the following features.

In some implementations, the airspace can be a drone approach corridor.

In some implementations, the drone approach corridor can extend from adrone highway to a landing pad associated with the ADLD.

In some implementations, the methods can include determining that anobject is within a threshold distance of a landing pad associated withthe ADLD, and the second data can include instructions for the drone tostop an approach to the landing pad.

In some implementations, the methods can include causing a warningdevice to be activated on the ADLD in response to receiving theindication that a drone has requested to land at a landing padassociated with the ADLD.

In some implementations, the warning device can produce a visible or anaudio warning of an approaching drone.

In some implementations, the methods can include sending a landingnotification to a user's computing device in response to receiving theindication that a drone has requested to land at a landing padassociated with the ADLD.

In some implementations, the methods can include determining, based onthe position of the drone with respect to the boundary of the airspace,a course correction for the drone, and the second data can includeinstructions for the drone to perform the course correction.

In some implementations, the second data can be communicated to thedrone by radio frequency communications.

In some implementations, the second data can be communicated to thedrone through a drone control platform.

In some implementations, the second data can be communicated to thedrone by lighting configurations on a landing pad.

In some implementations, the first data includes one or more images ofthe airspace, and determining the position of the drone with respect tothe boundary of the airspace includes identifying the drone within theone or more images, and determining the position of the drone withrespect to the boundary of the airspace within the one or more images.

In some implementations, the first data includes radio frequencytriangulation data, and determining the position of the drone withrespect to the boundary of the airspace includes determining theposition of the drone with respect to the boundary of the airspace usingon radio frequency triangulation techniques.

In another general aspect, the subject matter described in thisspecification can be embodied in an autonomous drone landing device(ADLD) that includes one or more processors, a data store coupled to theone or more processors having instructions stored thereon for executionby the one or more processors, a sensor coupled to the one or moreprocessors, and configured to monitor airspace above the ADLD, a warningdevice coupled to the one or more processors, and configured to alertbystanders of an approaching drone; and one or more communicationinterfaces coupled to the one or more processors, and configured tocommunicate with a drone control platform and a drone. This and otherimplementations can each optionally include one or more of the followingfeatures.

In some implementations, the instructions cause the one or moreprocessors perform the operations of any one or more of the abovemethods for configuring an ADLD.

In some implementations, the instructions cause the one or moreprocessors perform the operations of any one or more of the abovemethods for coordinating a drone approach to a landing site with anADLD.

In some implementations, the ADLD includes a landing pad coupled to theADLD.

In some implementations, the sensor is a first sensor, and the ADLDcomprises a second sensor coupled to the one or more processors, andconfigured to detect an orientation of a landing pad associated with theADLD.

In some implementations, the landing pad includes a drone chargingstation.

In some implementations, the charging station is a wireless chargingstation.

The present disclosure also provides a computer-readable storage mediumcoupled to one or more processors and having instructions stored thereonwhich, when executed by the one or more processors, cause the one ormore processors to perform operations in accordance with implementationsof the methods provided herein.

The present disclosure further provides a system for implementing themethods provided herein. The system includes one or more processors, anda computer-readable storage medium coupled to the one or more processorshaving instructions stored thereon which, when executed by the one ormore processors, cause the one or more processors to perform operationsin accordance with implementations of the methods provided herein.

It is appreciated that methods in accordance with the present disclosurecan include any combination of the aspects and features describedherein. That is to say that methods in accordance with the presentdisclosure are not limited to the combinations of aspects and featuresspecifically described herein, but also include any combination of theaspects and features provided.

The details of one or more embodiments of the present disclosure are setforth in the accompanying drawings and the description below. Otherfeatures and advantages of the present disclosure will be apparent fromthe description and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 depicts an example system in accordance with implementations ofthe present disclosure.

FIG. 2A depicts an example service platform in accordance withimplementations of the present disclosure.

FIG. 2B depicts an exemplary graphical user interface (GUI) inaccordance with implementations of the present disclosure.

FIG. 3A depicts example drone approach corridors in accordance withimplementations of the present disclosure.

FIG. 3B depicts a block diagram of an example autonomous drone landingdevice (ADLD) in accordance with implementations of the presentdisclosure.

FIG. 3C depicts an example network of ADLDs in accordance withimplementations of the present disclosure.

FIGS. 4-9 depict example processes that can be executed in accordancewith implementations of the present disclosure.

FIG. 10 is a schematic illustration of example computer systems that canbe used to execute implementations of the present disclosure.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

Implementations of the present disclosure generally relate tocontrolling drone ascent and descent to and from a flight corridor(e.g., flight in a “drone highway”). More particularly, implementationsof the present disclosure are directed to coordinating safe droneascents from and descents to geographic locations within predefineddrone approach corridors. In some examples, implementations of thepresent disclosure may enable drones to descend to and ascend fromgeographic locations with reduced or no reliance on onboard sensors todetect and avoid obstacles. More particularly, implementations of thepresent disclosure are directed to an autonomous drone landing device(ADLD) that can be used to guide a drone from flight corridor to alanding location. In some examples, an ADLD can guide a drone's approachto a landing location along a drone approach corridor. In some examples,the ADLDs can interface with a cloud-based drone control platform (alsoreferred to herein as the platform) to coordinate drone flights andapproaches between multiple locations. For example, an autonomous dronelanding system (ADLS) including one or more ADLDs in communication witha drone control platform may facilitate increased commercial uses fordrones including, for example, drone-based object delivery.

In some implementations, a drone approach corridor is defined as avolume of airspace extending from an area above a target location (e.g.,a ground-level location, a rooftop location) to the target location. Insome examples, the area above the target location includes a flightcorridor (also referred to herein as a drone highway). In some examples,the flight corridor is a higher speed, higher altitude drone flight pathrelative to a drone approach corridor. In some examples, a droneapproach corridor is defined as a volume of airspace extending from adrone highway to the target location.

In some implementations, an ADLD is an electronic device that can beplaced at a drone landing location. In some examples, the ADLD includesa flat surface on which a drone can land (e.g., a drone landing pad).The ADLD includes an electronic communication interface (e.g., WiFi orLTE) to communicate with a drone control platform and, in some examples,drones. The ADLD can communicate with the platform through a computernetwork. In addition, the ADLD includes a sensor package to guide dronelanding approaches along an approach corridor to the ADLD. The sensorpackage can include, for example, an imaging sensor (e.g., a camera,radar, sonar), infrared sensors (e.g., light sources and detectors),orientation sensors, location sensors (e.g., global positioning system(GPS), WiFi positioning system (WPS)), visual indicators (e.g., LEDs),and audible indicators.

In some implementations, the ADLD establishes a drone approach corridorduring a configuration phase. For example, when a user first places anADLD at a desired drone landing location (e.g., on a building, in ayard) and powers on the ADLD, the ADLD can initiate a configurationprocess. During the configuration process, the ADLD can perform severaldiagnostic checks to, for example, verify the airspace above the ADLD isfree of obstructions (e.g., absence of tree branches, powerlines, etc.),establish a drone approach corridor, verify that the drone landing padis sufficiently level for a drone to land, and/or determine thegeographic location of the ADLD (e.g., latitude, longitude, altitude).For example, the ADLD can obtain an image of the airspace above the ADLD(e.g., using an imaging sensor). The ADLD can analyze the image toverify that there are no obstructions (e.g., power lines, tree branches)in the airspace between the ADLD and a drone highway above the ADLD. Insome examples, the ADLD can use radar or sonar (e.g., transceivers ortransducers) to detect obstructions in a region of airspace above theADLD. In some examples, the ADLD can check the airspace for obstructionswithin a defined volume of airspace. If there are no obstructions, theADLD can define the volume of airspace as a new drone approach corridor.If there are obstructions within the volume of airspace, the ADLD cannotify the user of the obstructions. In some examples, the ADLD canprovide the user with an image (or other means of feedback) of theairspace including an annotation identifying the obstruction. Forexample, the ADLD can send the notification and image to the user'scomputing device or display the image on a display of the ADLD. In someexamples, the ADLD can verify its orientation to determine whether thelanding pad is sufficiently level for a drone to land. For example, theADLD can determine based on orientation sensor data whether the ADLD issufficiently level for a drone to land on the landing pad. If not, theADLD can notify the user and the user can level the ADLD.

In some implementations, the ADLD can register with the drone controlplatform, for instance, to confirm that the ADLD is ready to receivedrones. For example, after the ADLD completes the configuration phase,it can register its location with the drone control platform. Forexample, an ADLD can register with the drone control platform by sendingcharacteristic data related to the ADLD and an associated drone approachcorridor to the drone control platform. The drone control platform canuse the ADLD characteristic data to coordinate drone approaches andlandings with the ADLD. For example, the ADLD characteristic data caninclude a unique identifier assigned to the ADLD (e.g., a serialnumber), the location of the ADLD, and data defining a drone approachcorridor for landing drones at the ADLD (e.g., location and boundariesof the corridor).

In addition, the ADLD can guide drone landing approaches to the ADLD'slanding pad. For example, a drone can request to enter a drone approachcorridor defined by the ADLD. In some examples, the drone can send arequest to enter the drone approach corridor to the drone controlplatform. The drone control platform can monitor the status of the ADLD(e.g., whether the ADLD is online, obstructed, or currently has anotherdrone landing) and either grant or deny the request. If the request isgranted, either the drone control platform or the drone itself canindicate to the ADLD when the drone enters the drone approach corridor.

The ADLD can guide the drone along the approach corridor to the landingpad once the drone's request is granted and the drone enters the ADLD'sapproach corridor. For example, the ADLD can identify the drone'sposition within the corridor using an imaging sensor (e.g., camera,radar, or sonar), and issue appropriate course corrections to the droneto guide it along the corridor. For example, the ADLD can determine fromimages of the drone's horizontal position within the corridor that thedrone is approaching a boundary of the corridor and issue appropriatecourse corrections to the drone to re-center the drone in the corridor.In some examples, the ADLD can use other position finding techniques tolocate the drone within the approach corridor and guide it to thelanding pad (e.g., radio frequency (RF) triangulation techniques, suchas WiFi positioning). The ADLD can issue the course corrections, forexample, either through direct communication with the drone (e.g., WiFi,RF, infrared (IR), Bluetooth) or through the drone control platform. Insome examples, the ADLD can include an IR camera and the drone caninclude IR light sources. The ADLD can detect the location of the dronebased on the location of the drone's IR light sources in an image of theapproach corridor, and issue course corrections as appropriate.

In some implementations, the ADLD can illuminate landing guidance lights(e.g., IR lights at the perimeter of the landing pad) to guide the droneto the landing pad. For example, the drone can include infrared sensors(e.g., an IR camera) and can use the landing guidance lights todetermine its position within the approach corridor. In some examples,the landing guidance lights can be used in conjunction with the coursecorrections from the ADLD.

In some implementations, the ADLD can provide ADLD status updates to thedrone control platform. For example, the ADLD can detect if the landingpad or drone approach corridor becomes obstructed and inform the dronecontrol platform. In such situations, the drone control platform candeny all drone requests to land at the ADLD until the obstruction iscleared. In addition, the ADLD or the drone control platform can notifya user that the ADLD is obstructed so that the user can remove theobstruction. In some examples, a user can provide a backup landing areafor drones if the user's ADLD becomes obstructed or otherwiseinoperable. For example, a user can designate another ADLD that isregistered with the drone control platform (e.g., a neighbor's ADLD) asa backup landing location and approach corridor. If the user's ADLDbecomes obstructed the drone control platform can reroute drones thatrequest to land at the user's landing location to the designated backupADLD.

In some implementations, the ADLD includes visual and/or audibleindicators to alert bystanders that a drone entering the drone approachcorridor and will be landing. Visual indicators can include, forexample, lights (e.g., flashing LEDs), and audible indicators caninclude, for example, a siren, alarm, or verbal messages. For example,when the ADLD receives an indication that a drone is entering the droneapproach corridor, the ADLD can initiate the visual or audibleindicators to alert bystanders of the approaching drone. In someimplementations, the ADLD includes a proximity sensor to detect when anobject (e.g., a person, animal) is within a threshold distance (e.g., asafety distance) of the ADLD during a drone ascent or descent. Forexample, if the ADLD detects an object within a safety area, the ADLDcan instruct a descending drone to stop an approach to the landing pad.For example, the ADLD can instruct the drone to abort the descent, exitthe drone approach corridor, hover until the object (e.g., person)leaves the safety area, or re-route the drone to a secondary ADLD.

In some implementations, ADLD communications with drones are agnostic todrone flight controllers. For example, the ADLD can include adaptersthat enables it to communicate course corrections to any drone flightcontroller in a format that can be executed by the flight controllers.

In some implementations, an ADLD can include a drone charging stationintegrated with the landing pad so that a drone that lands at thelanding pad can be recharged. For example, the charging station can be awireless power transfer device (e.g., a wireless charging station).

In some implementations, the drone control platform is used tocoordinate access to an approach corridor by a single drone, or multipledrones. In some examples, a drone control platform uses an entry requestprotocol to coordinate drone entry into and ascents/descents within adrone approach corridor. For example, a drone may not be permitted toenter a drone approach corridor until the drone requests to perform anapproach (e.g., ascent, descent) in the particular drone corridor andthe request is granted by the platform. In some examples, if a firstdrone has received permission to perform an approach in a particulardrone approach corridor, and a second drone requests to enter the samecorridor, the drone control platform will deny the second drone'srequest. In some examples, the drone control platform can define aholding pattern for the second drone that is outside the drone highway.

In some implementations, the drone control platform coordinates the useof drone approach corridors in advance of a drone request to perform anapproach in a particular corridor. For example, the drone controlplatform can schedule multiple drone approaches for a drone approachcorridor in advance of each drone actually requesting entry into a droneapproach corridor. For example, the platform can coordinate drone flightplans such that multiple drones arrive at a particular drone approachcorridor at different times. In some examples, the drone arrival timesat an approach corridor can be sufficiently spaced, such that each dronehas sufficient time to descend, perform one or more tasks, and ascendprior to a second drone reaching the drone approach corridor. In someexamples, the drone control platform can coordinate drone arrival timesat a drone approach corridor by modifying characteristics of eachdrone's flight plan (e.g., takeoff times, airspeed, waypoints, chargelocations, intervening tasks, etc.).

In some implementations, collision avoidance protocols are defined fordrones to avoid ground obstructions within or near a drone approachcorridor (e.g., power lines, tree branches, animals, people). Collisionavoidance protocols can include, for example, defined boundaries of thedrone approach corridor, drone size limitations for a particularcorridor, drone performance limitations for a particular corridor,environmental limitations (e.g., wind speed) for entering a corridor,standoff distances from obstructions inside or outside the corridor,speed limits (e.g., descent/ascent rate limits) within the corridor, andbattery state restrictions within the corridor (e.g., required minimumcharge level to takeoff or enter the corridor). In some examples, thecollision avoidance protocols can include a set of flight parametersthat control the flight of a drone so that the drone can navigate adrone approach corridor with minimal or no reliance on onboard sensorsto detect and avoid objects near the target location (e.g., trees,buildings, power lines, etc.).

In some implementations, the drone control platform can control droneflights in one or more of three flight stages: a pre-flight stage, anin-flight stage, and a post-flight stage. During the pre-flight stage,the platform receives data defining flight tasks for a drone. The datacan include, for example, a sensor package already installed on theparticular drone, mechanical features of the particular drone (e.g.,motor type/size, airframe configuration, battery type/size, etc.), oneor more geographical locations for a drone flight (e.g., latitude andlongitude), and one or more tasks to be performed by a drone (e.g.,surveying an area of land, delivering an object, performing sensormeasurements, etc.). In some examples, geographical locations for adrone flight can include a takeoff position, a landing position, and,optionally, one or more waypoints. In some examples, the geographiclocation for a drone flight can be a geographic area (e.g., a set ofgeographic coordinates defining a flight area). For example, thegeographic area can be an area for the drone to survey.

The platform uses the flight task data to generate a flight plan for adrone. The flight plan can include, for example, a type of drone toperform the flight, a sensor package for the drone (e.g., a sensorpackage to be installed on the drone to perform the flight tasks), aplurality of waypoints, and/or a flight profile between waypoints. Insome examples, the flight profiles can include, for example, expectedflight time between waypoints, drone speed between waypoints, dronealtitude, expected drone flight attitude (e.g., an orientation angle ofthe drone with respect to the horizon), expected battery state (e.g.,charge level), and sensor configurations/operations. In some examples,the platform obtains environmental data (e.g., geographic data, weatherdata) associated with the drone flight location, drone performancemetrics (e.g., from historical flight data), and/or sensor performancemetrics. The platform can use the environmental data, drone performancemetrics, and/or sensor performance metrics in combination with theflight task data to generate a drone flight plan for a particular task.For example, the platform can select an appropriate drone and sensorpackage for particular task based on the task, the drone performancemetrics, and the environmental data.

During the in-flight stage, the platform sends the flight plan to theselected drone and monitors drone flight data while the drone executesthe flight plan. For example, in some implementations, the entire flightplan can be transmitted to a drone (e.g., through a communicationinterface on the drone) and the drone can automatically execute theflight plan. In some implementations, the platform sends control signalsto the drone to execute the flight plan. In either case, the platformreceives drone flight data while the drone executes the flight plan. Thedrone flight data can include, for example, battery status, speed,altitude, location data (e.g., GPS data), sensor data (e.g., dataobtained by the drone's sensor package such as camera images). In someexamples, the drone flight data can include requests to enter droneapproach corridors. The platform can modify the flight plan based on thedrone flight data and send flight plan updates to the drone while thedrone is in-flight.

In some implementations, the platform receives pre-flight diagnosticdata from the drone before the drone begins executing the flight plan(e.g., within minutes or seconds before the drone begins executing theflight plan). For example, pre-flight diagnostic data can include thelocation of the drone, battery status, motor status, and otherappropriate data. In addition, the platform can obtain environmentaldata and airspace data before the drone begins execution of the flightplan. The platform can verify the flight plan based on the diagnosticdata and/or the environment and airspace data, and, if necessary, modifythe flight plan and send appropriate updates to the drone. For example,if the drone's battery charge is less than required for the completeflight plan, the platform can modify the flight plan accordingly. Asanother example, if the drone's battery charge is less than required forthe complete flight plan, the platform can communicate with an operatorof the drone to instruct the operator to charge the battery, or changethe battery. As another example, if the drone is located at a positionother than the takeoff point of the flight plan the platform can modifythe flight plan accordingly. For example, if another aircraft or droneis located in the area, the platform can delay or modify the flightplan. As another example, if a different drone is delayed in a droneapproach corridor that a drone undergoing pre-flight diagnostics isexpecting to use, the platform can modify the flight plan for thepre-flight drone accordingly. For example, the take-off time of thedrone undergoing pre-flight diagnostics can be delayed to ensure theother drone will be clear of the approach corridor.

In some examples, the drone control platform can receive drone approachcorridor entry requests from drones that are not controlled by theplatform or drones operating in accordance with flight plans that havenot been generated by the drone control platform. For example, a dronerequesting to enter a drone approach corridor may be controlled by oroperating in accordance with a flight plan generated by a drone controlsystem different from the drone control platform. In such an example,when granting access to a drone approach corridor, the drone controlplatform can provide a temporary flight plan to the drone that defines,for example, a flight path, approach to, and collision avoidanceprotocols for entry into the approach corridor.

At the post-flight stage, the platform can analyze the drone flight dataand sensor data (e.g., data obtained by the drone's sensor package). Thedrone flight data can be used to build historical profiles of the typeof drone used (e.g., drone performance metrics) and the location of theflight (e.g., ground topography). In some examples, the drone flightdata can be used to modify drone approach corridors (e.g., boundaries,collision avoidance protocols, etc.). In some examples, the originalflight plan can be compared with the flight data to evaluate the drone'sperformance and infer drone performance metrics about the particulardrone and/or the type of drone used. The sensor data can be analyzed andused to generate flight deliverables for a user (e.g., an image surveyof an area of land, sensor data reports, etc.) In some examples, thesensor data and drone flight data can be used to evaluate the executionof the flight, for example, whether all of the data required by a flighttask was obtained. If the task was not completed, the flight data andsensor data can be used to generate additional flight plans to completethe task.

FIG. 1 depicts an example system 100 that can execute implementations ofthe present disclosure. The example system 100 includes a computingcloud 101 that includes one or more computing systems 102, one or moredrones, such as drones 104, 106, one or more computing devices, such ascomputing devices 108, 110, and one or more ADLDs 120. The examplesystem 100 further includes a network 112. The network can include alarge network or combination of networks, such as a local area network(LAN), wide area network (WAN), the Internet, analog or digital wiredand wireless telephone networks (e.g., 4G and Long-Term Evolution (LTE)networks), a satellite network, one or more wireless access points, orany appropriate combination thereof connecting any number of mobileclients, fixed clients, drones, and servers.

The computing systems 102 each include a computing device 102 a andcomputer-readable memory provided as a persistent storage device 102 b,and can represent various forms of server systems including, but notlimited to a web server, an application server, a proxy server, anetwork server, or a server farm. For example, the computing systems 102can host a drone control platform.

The drones 104, 106 can each include various types of UAVs includingautonomously controlled or remotely controlled UAVs. In some examples,the drones 104, 106 can include a communications interface. In someexamples, the drones 104, 106 to communicate with the computing systems102 and the computing devices 108, 110 either directly or through thenetwork 112. In some examples, the drones 104, 106 can receive controlsignals from the computing systems 102 or the computing devices 108,110.

The drones 104, 106 can include flight controllers (e.g., 3DR APM, 3DRPixhawk, DJI A2, DJI Ace One, DJI Naza-M V2, DJI WooKong). The drone's104, 106 flight controller can control the drone's 104, 106 propulsionsystems and control surfaces to execute flight plans. In addition, thedrones 104, 106 can include a sensor package 114. The sensor package 114can include, but is not limited to, navigation sensors (e.g., GPSreceivers), cameras, environmental sensors, surface mapping sensors, andobject delivery equipment.

The computing devices 108, 110 are associated with respective users 116,118. In some examples, the computing devices 108, 110 can each includevarious forms of a processing device including, but not limited to, adrone remote control unit, a desktop computer, a laptop computer, atablet computer, a wearable computer, a handheld computer, a personaldigital assistant (PDA), a cellular telephone, a network appliance, asmartphone, an enhanced general packet radio service (EGPRS) mobilephone, or an appropriate combination of any two or more of these exampledata processing devices or other data processing devices.

An ADLD 120 is an electronic device that can be placed at a dronelanding location. In some examples, the ADLD 120 includes a flat surfaceon which a drone can land (e.g., a drone landing pad). The ADLD 120includes an electronic communication interface (e.g., a network orcellular communication interface) for communicating with the computingsystem 102 through network 112. For example, the ADLD 120 can include aWiFi network interface, an LTE network interface, or both. In addition,the ADLD 120 includes a sensor package to guide drone landing approachesalong an approach corridor to the ADLD's 120 landing pad. The sensorpackage can include, for example, an imaging sensor (e.g., a camera,radar, sonar), infrared sensors (e.g., light sources and detectors),orientation sensors, location sensors (e.g., GPS, WPS), visualindicators (e.g., LEDs), and audible indicators. An ADLD 120, asdescribed in more detail below, can define drone approach corridors andguide drone approaches to landing sites.

In some implementations, and as discussed in further detail herein, thecomputing systems 102 host a drone control platform. The drone controlplatform receives drone tasks and generates a flight plan for a drone104, 106 to accomplish the tasks. Drone tasks can include, but are notlimited to, aerial surveying, videography, search and rescue, scientificresearch, crop dusting, livestock management, object pick-up, and objectdelivery. For example, the drone control platform can receive task datafrom a computing device 108, 110 and use the task data to generate aflight plan for a drone 104, 106. In some examples, the drone controlplatform can select a drone to execute the task based on the task data.For example, the drone control platform can select a particular type ofdrone that is most suited to the task based on performance metricsassociated with the type of drone, or sensor packages 114 that the drone104, 106 includes or that can be attached to the drone 104, 106, and/oravailability of the drone 104, 106. In some examples, the drone controlplatform can select a sensor package 114 for the drone 104, 106. In someexamples, the sensor package 114 is already provided for the drone 104,106 and is taken into account when determining the flight plan. In someexamples, the drone control platform can adapt the flight plan to apre-selected drone (e.g., a user 116, 118 may request a flight plan forthe user's specific drone 104, 106).

In some implementations, the drone control platform uses the flight taskdata, mechanical features, and/or the drone sensor package to generate aflight plan for a drone 104, 106. In some examples, the flight plan caninclude, for example, a type of drone to perform the flight, a sensorpackage for the drone (e.g., a sensor package to be installed on thedrone to perform the flight tasks), a plurality of waypoints, and flightprofiles between waypoints. In some examples, the flight profiles caninclude, for example, expected flight time between waypoints, dronespeed between waypoints, drone altitude, expected drone flight attitude(e.g., an orientation angle of the drone with respect to the horizon),expected battery state (e.g., charge level), and sensorconfigurations/operations.

In some implementations, the drone control platform generates a flightplan that is agnostic to the various types of flight controllersavailable for drones 104, 106. In other words, the flight plan is notformatted for execution by any particular flight controller, but can beadapted for use with any one of a variety of different drone flightcontrollers. In some implementations, the drone control platform caninclude adapters that enable the drone control platform to communicate aflight controller agnostic flight plan to different types of droneflight controllers. For example, the adapters can convert the flightcontroller agnostic flight plan into a flight controller specificformat, such that the flight plan can be executed by a particular flightcontroller.

In some implementations, the adapters can be software modules that arestored and executed by computing systems 102. In some examples, theadapters can be a software module stored on and executed by a computingdevice (e.g., computing device 108). For example, the computing systems102 can send a flight controller agnostic flight plan to computingdevice 108. The computing device 108 can use an adapter to convert theflight controller agnostic flight plan into a flight controller specificformat and send the flight controller specific flight plan (or dronecontrol commands based on the flight plan) to the drone's (e.g., drone104) flight controller. In some examples, the adapters can be stored onan executed by a special purpose computing device (e.g., an adaptermodule of a drone communication interface, a raspberry Pi deviceconfigured as a flight controller adapter) that is coupled to the droneor in communication with the drone. For example, the flight controlleragnostic flight plan can be sent to the special purpose computingdevice. The special purpose computing device can convert the flightcontroller agnostic flight plan into a flight controller specific formatand provide the flight controller specific flight plan (or drone controlcommands based on the flight plan) to a drone's 104, 106 flightcontroller.

In some implementations, the drone control platform can provide theflight plan to the drone 104, 106 for execution by the drone 104, 106.For example, the drone control platform can provide the flight plandirectly to a drone (e.g., drones 106) through the network 112. In someimplementations, the drone control platform can provide the flight planto a drone (e.g., drone 104) through a user's 116 computing device 108.For example, the drone control platform can send the flight plan to theuser's 116 computing device 108, and the user 116 can upload the flightplan to their drone 104 from the computing device 108.

The drone control platform can receive flight data from the drone 104,106 while the drone executes the flight plan. The flight data caninclude, for example, battery status, speed, altitude, location data(e.g., GPS data), and sensor data (e.g., data obtained by the dronessensor package such as camera images). In some implementations, thedrone control platform can analyze the flight data in real-time (e.g.,the flight data can be analyzed while the drone is in-flight executingthe flight plan). The drone control platform can use the flight data togenerate flight plan modifications and send the modifications to thedrone 104, 106 in real-time. In some examples, the drone controlplatform can determine one or more flight characteristics of the dronefrom the flight data. For example, to minimize the bandwidth ofcommunications between the platform and the drone, the flight data canbe minimized (e.g., only GPS data may be received). The drone controlplatform can calculate additional drone flight characteristics from theflight data (e.g., GPS data), such as speed, altitude, position,heading, etc.

In some examples, the drone control platform can enable a user 116, 118to monitor a drone's 104, 106 execution of a flight plan. For example,the drone control platform can format at least a portion of the flightdata, including sensor data (e.g., camera images), for display on acomputing device 108, 110, and provide the formatted flight data to auser's 116, 118 computing device 108, 110. In some implementations, thedrone control platform can allow a user who requested the flight plan(e.g., submitted flight task data) to monitor the drone's 104 executionof the flight plan (e.g., user 116 can monitor the flight of drone 104).In some examples, the drone control platform can allow a remote user 118(e.g. a friend or colleague of user 116) to monitor the drone's 104execution of the flight plan (e.g., user 116 can monitor the flight ofdrone 104).

In some implementations, the platform obtains environmental data (e.g.,geographic data, weather data, historical flight data) associated withthe drone flight location, drone performance metrics, and/or sensorperformance metrics. In some examples, the computing systems 102 caninterface with one or more third-party systems 122 (e.g., a weathersystem, a Federal Aviation Administration (FAA) system, a database oftopographical maps, etc.). The third-party systems 122 can be computingsystems, for example, web servers, or database systems. The dronecontrol platform can access information from the third-party systems 122(e.g., weather information, air traffic information, or land topologyinformation). The drone control platform can use the accessedinformation to generate flight plans or flight plan modifications. Insome implementations, the drone control platform can receive ADLD statusinformation from a network of ADLDs that are registered with theplatform. For example, the ADLD status information can include data thatindicates the availability of each ADLD in the network to guide droneapproaches associated drone landing sites.

In some examples, the drone control platform can use the environmentaldata, ADLD status information, drone performance metrics, and/or sensorperformance metrics in combination with the flight task data to generatea drone flight plan for a particular task. For example, the dronecontrol platform can select an appropriate drone 104, 106 and sensorpackage 114 for a particular task based on the task data, the droneperformance metrics, and the environmental data. For example, the dronecontrol platform can use topology information to determine flightaltitudes for various portions of a flight plan. As another example, thedrone control platform can use weather information to modify a flightplan (e.g., to steer a drone around approaching weather ordelay/reschedule/abort a flight). As another example, the drone controlplatform check for airspace restrictions (e.g., from an FAA system) andgenerate a flight plan that avoids restricted airspace. As anotherexample, the drone control platform can use ADLD information toreschedule or reroute drones that are schedule to land at an unavailableADLD.

In some implementations and as described in more detail below withreference to FIG. 3A, the drone control platform can use defined droneaccess corridors that enable drone operations (e.g., drone-based objectpickup and delivery) near commonly used ground locations, such as thosethat are located in residential or commercial areas. In some examples,the drone control platform can control access to the drone approachcorridors by one or more drones 104, 106.

In some implementations, the drone control platform can analyze thedrone flight data and sensor data obtained by the drone during theflight to verify completion of the flight plan. In some examples, thedrone control platform can generate a re-tasking flight plan for thesame or a different drone, if the task was not completed (e.g., due toweather, drone endurance (battery drain), mechanical/computationalfailure). In some examples, the drone control platform can use theflight data to build a drone performance profile. For example, the dronecontrol platform can compare the original flight plan to the actualflight data to evaluate the drone's performance and infer droneperformance metrics for the particular drone and/or the type of droneused. In some examples, the drone control platform can use computerlearning techniques to analyze the flight plan and flight data. In someexamples, the drone control platform can incorporate externalinformation (e.g., location specific information, weather information)to include the drone's performance under particular circumstances (e.g.,in rough terrain (requiring many altitude changes) or under particularweather conditions) into drone performance profiles. In some examples,the drone control platform can use the flight data to modify attributesof drone approach corridors (e.g., boundaries, collision avoidanceprotocols, etc.) that a drone 104, 106 may have navigated whileexecuting a flight plan.

FIG. 2A depicts an example drone control platform 200 in accordance withimplementations of the present disclosure. The example drone controlplatform 200 can provide one or more drone flight control servicesincluding, but not limited to, flight planning 202, flight control 204,flight coordination 206, and post-flight services 208. In some examples,the flight planning 212 includes a task planning interface 212 andpre-flight visualization 214 of a generated flight plan. In someexamples, the task planning interface 212 is an interface with computingsystems 102 through which a user submits drone tasking data. Forexample, drone tasking data can include, but is not limited to, a tasktype (e.g., surveying, videography, performing sensor measurements,livestock surveillance, object delivery/pickup, etc.) and one or moregeographical locations for a drone flight (e.g., latitude andlongitude). In some examples, geographical locations for a drone flightcan include a takeoff position, a landing position, and, optionally, oneor more waypoints. In some examples, the geographic location for a droneflight can be a geographic area (e.g., a set of geographic coordinatesdefining a flight area). For example, the geographic area can be an areafor the drone to survey. For example, the geographic location can simplyinclude an origin and a destination (e.g., for object pickup anddelivery). In some examples, the origin and destination can be a firstand a second ADLD that are each registered with the platform 200.

In some examples, task planning interface 212 includes a user interfacethrough which a user can provide drone tasking data. In some examples,the following example functionality is provided by the user interface:task selection, location identification, waypoint identification, dronetype selection, drone selection, sensor package selection, flightscheduling, and drone monitoring options. In some examples, the userinterface can permit a user to select an origin and/or destination froma list of ADLDs that are registered with the platform 200.

In some examples, task planning interface 212 interfaces with one ormore third-party systems (e.g., a weather system, a Federal AviationAdministration (FAA) system, a database of topographical maps, etc.).The drone control platform can access information (e.g., weatherinformation, air traffic information, or land topology information) fromthe third-party systems and use the third party data to generate ormodify a flight plan. For example, the drone control platform can usethe environmental data, air traffic information, or land topologyinformation in combination with the flight task data to generate a droneflight plan for a particular task. For example, the drone controlplatform can select an appropriate drone 104, 106 and sensor package 114for a particular task based on the task data, the drone performancemetrics, and the environmental data. For example, the drone controlplatform 200 can use topology information to determine flight altitudesfor various portions of a flight plan or to select a drone withsufficient endurance and power to operate at widely varying altitudes inmountainous terrain. As another example, the drone control platform 200can use weather information to modify a flight plan (e.g., to steer adrone around approaching weather or delay/reschedule a flight). Asanother example, the drone control platform 200 can check for airspacerestrictions (e.g., from an FAA system) and generate a flight plan thatavoids restricted airspace. In some examples, the drone control platform200 can submit a flight plan to a third party (e.g., an air trafficcontrol system), for example, for flight plan approval or forcoordination with other, non-drone flights. As another example, thedrone control platform 200 can schedule a recharge stop at an ADLD thathas a recharging station, for example, if a drone's battery endurance isinsufficient to complete a flight between a designated origin anddestination on a single battery charge.

In some examples, the drone control platform 200 provides a pre-flightvisualization 214 of a flight plan. For example, the drone controlplatform 200 can provide a graphical simulation of the flight plan, asdescribed in more detail below in reference to FIG. 2B.

In some examples, the flight control services 204 include pre-flightdiagnostics 216, flight status monitoring 218, and in-flight flight planmodifications 220.

In some examples, pre-flight diagnostics 216 can include analyzing theflight plan based on pre-flight diagnostic data received from the drone,environmental data, airspace data, ADLD information, and dronescheduling data. For example, pre-flight diagnostic data can include thelocation of the drone, battery status, and other appropriate data.Environmental data can include, for example, current weather conditions.Airspace data can include, for example, information related to otheraircraft and drones that may interfere with the drone's flight plan.Drone scheduling data can include, for example, flight plans orin-flight data from other drones controlled by the drone controlplatform 200. The drone control platform 200 can review the flight planand make appropriate modifications to the flight plan based on any orall of the pre-flight diagnostic data, environmental data, airspacedata, or drone scheduling data.

For example, if the drone's battery charge is less than required for thecomplete flight plan, the platform can modify the flight planaccordingly. As another example, if the drone is located at a positionother than the takeoff point of the flight plan the platform can modifythe flight plan accordingly. For example, if another aircraft or droneis located in the area, the platform can delay or modify the flightplan. As another example, a different drone may be scheduled to use ordelayed in its use of a particular drone approach corridor which thedrone undergoing pre-flight diagnostics is scheduled to use, or anassociated ADLD may indicate that the drone approach corridor isunavailable. Upon detecting such a situation, the platform 200 canmodify the flight plan for the drone undergoing pre-flight diagnosticsaccordingly.

In some examples, flight status monitoring 218 can include providingdrone flight data to a user's computing device, as described above. Theflight status can include, for example, a graphical representation ofthe drone's location (e.g., overlaid on a digital map), drone speed,drone altitude, battery status, task status, and sensor data. In someexamples the flight status monitoring 218 can provide additionalin-flight functionalities such as, but not limited to, manual controloverride, manual flight plan modification, and re-tasking or additionaltasking options.

In some examples, in-flight flight plan modifications 220 can includecontrolling the drone's flight by sending modifications to the drone'sflight plan. The modifications can be automatically generated by thedrone control platform 200. For example, as discussed above, dronecontrol platform 200 can make flight plan modifications based on droneflight data, other drone control platform 200 data (e.g., flight plansfor other drones), and information from third-party systems (e.g.,weather data, airspace data). The flight data can include, for example,battery status, speed, altitude, location data (e.g., GPS data), andsensor data (e.g., data obtained by the drones sensor package such ascamera images). The drone control platform 200 can modify the flightplan based on the drone flight data and send flight plan updates to thedrone while the drone is in-flight.

For example, if the wind is stronger than expected and such that theattitude of the drone is steeper than expected, the field of view (FOV)of a drone's camera may be altered from that expected in the flightplan. The drone control platform 200 can calculate compensatingwaypoints to ensure that proper camera images (e.g., images inaccordance with the drone's task) are obtained and send the updatedflight plan to the drone. In some examples, a compensating waypoint caninclude a waypoint that is added to or modified within a flight plane tocompensate based on in-flight feedback. Using the example above, if thewind is stronger than expected, and is such that the attitude of thedrone is steeper than expected, the drone's camera might not becapturing an image of the complete geographical area expected to becaptured. Consequently, a new waypoint can be added or an existingwaypoint can be modified to provide a compensating waypoint that enablesthe drone's camera to be in a position to capture the image of thecomplete geographical area as expected.

In some examples, flight plan modifications can include defining aholding pattern for a drone to fly while awaiting permission to enter adrone approach corridor. In some examples, flight plan modifications caninclude re-routing a drone to another drone approach corridor (e.g., asecondary drone approach corridor) in the event that the designateddrone approach corridor is occupied by another drone or is otherwiseinaccessible (e.g., as indicated by an ADLD).

In some implementations, the drone control platform 200 can obtain“real-time” environment data during the drone flight, for example,weather data, airspace data, and drone approach corridor data. Airspacedata can include, for example, the locations of aircraft flying in thearea, or other drones flying in the area including other drones that arebeing concurrently controlled by the drone control platform 200. Droneapproach corridor data can include, for example, information related toobstructions or the safety of drone approach corridors. For example, ifthe drone enters a drone approach corridor but detects (e.g., by asensor on the drone) that the corridor is obstructed or thatenvironmental conditions (e.g., wind speed) exceed collision avoidanceprotocols for the corridor, the drone can send appropriate notificationsabout the status of the corridor to the drone control platform. In someexamples, the platform 200 can send drone approach corridor data to anADLD associated with the approach corridor or to a user responsible forthe ADLD. The drone control platform 200 can modify flight plans basedon the environment data, the airspace data, or the drone approachcorridor data.

In some examples, the flight coordination 206 services include collisionavoidance 222 and flight scheduling 224. In some examples, collisionavoidance 222 can include, but is not limited to, monitoring multipledrones concurrently executing flight paths in a similar location,coordinating access to drone approach corridors, monitoring ADLD status,monitoring air traffic control systems, coordinating drone flight planswith nearby airports, and obtaining approval for drone flight plans fromregulatory agencies or airports (if necessary). In some examples,collision avoidance includes monitoring Automatic DependentSurveillance-Broadcast (ADS-B) data to detect aircraft that mayinterfere with a drone's flight plan. For example, a network of ADS-Bdevices can be monitored to detect an aircraft (e.g., a medical rescuehelicopter) taking off and determine whether the drone's flight planwill interfere with the aircraft's flight path (e.g., flight vector). Ifso, the drone control platform can modify the drone's flight plan (e.g.,change a waypoint) or otherwise redirect the drone (e.g., direct thedrone to holding pattern or temporary landing site).

In some examples, flight scheduling 224 can include, but is not limitedto, coordinating drone flights to complete a task, coordinating betweendrones within a particular area, coordinating drone flights to completea series of tasks, and scheduling the use of particular drone approachcorridors. For example, multiple drones or multiple flights of aparticular drone may be required to complete a particular task (e.g., avideo documentary). The drone control platform 200 can coordinate amongmultiple flight plans to complete the task. As another example, multipledrones may take off and land from a particular location (e.g., abusiness that provides drone services). The drone control platform 200can schedule drone tasking to coordinate landings and takeoffs bymultiple drones at the same location. The drone control platform 200 canschedule drone tasking to coordinate access to appropriate droneapproach corridor(s) at the location. In some examples, the dronecontrol platform 200 can coordinate drone take-offs and landings among anetwork of ADLDs.

In some examples, flight scheduling 224 can include pairing a droneservice requester (e.g., a user requesting drone services) with a droneprovider (e.g., a user or business that operates drones to performdrone-based services). For example, the drone control platform canassign drone tasks and schedule flight plans with registered droneservice providers. In some examples, the drone control platform canassign flight plans to drone service providers based on the task andperformance metrics associated with the service provider's drones. Insome examples, the drone control platform can assign flight plans todrone service providers based on the task and sensor packages associatedwith the service provider's drones.

In some examples, the post-flight services 208 include data processing226, re-tasking 228, and computer learning 230. In some examples, dataprocessing 226 includes functionality such as, but not limited to,processing sensor data (e.g., combining camera images to form acomprehensive survey image), generating post-flight deliverables (e.g.,data reports, aerial surveys), storing sensor data (e.g., in a useraccount), storing flight data, and identifying maintenance or repairsneeded by a drone based on flight data (e.g., battery replacement,sensor repairs).

In some examples, re-tasking 228 can include analyzing flight data andsensor data to determine a completion status of the flight plan and/ordrone task(s). For example, the drone control platform 200 can determinewhether all the tasks required by the flight plan were completed. Thedrone control platform 200 can generate a new flight plan to finish anuncompleted portion of the original flight plan. In some examples, thedrone control platform 200 can determine how well the tasks werecompleted. For example, some survey images may be poor quality due to awind gust. Furthermore, the drone control platform 200 may not have beenable to modify the flight plan to have the drone re-take the poorquality images during the flight due to the drone's battery state. Thedrone control platform 200 can generate a new flight plan to re-performa portion of the original flight plan to obtain better quality data(e.g., images).

In some examples, computer learning 230 includes analyzing flight dataand/or sensor data using computer learning algorithms. For example, thedrone control platform 200 can use drone flight data to buildperformance profiles of drones (e.g., drone performance metrics). Forexample, the original flight plan can be compared with the flight datato evaluate the drone's performance and infer drone performance metricsabout the particular drone and/or the type of drone used. In someexamples, sensor data can be used to develop location profiles for usein generating future flight plans. Moreover, location profiles caninclude, for example, indications of ground topography and flightobstructions (e.g., power wires, trees, buildings, etc.). In someexamples, location profiles can include, for example, indications ofground topography and flight obstructions (e.g., power wires, trees,buildings, etc.) in and around drone approach corridors. In someexamples, the drone control platform 200 can use both flight data anddata received from an ADLD (e.g., ADLD sensor data) related to a droneapproach corridor to develop a location profile for the approachcorridor. In some examples, location profiles of drone approachcorridors can be shared with respective ADLDs associated with theapproach corridors. For example, an ADLD can use the location profiledata to recalibrate sensors.

FIG. 2B is an example graphical user interface (GUI) 250 in accordancewith implementations of the present disclosure. One or more features ofthe example GUI 250 described below can be incorporated into userinterfaces for a task planning interface 212 or a flight statusmonitoring interface (e.g., as part of task planning interface 212 orflight status monitoring 218 services described above). The GUI 250includes a map interface 252, a polygon selection tool 254, flight planwaypoints 256, a drone icon 258, and a flight visualization window 260.

In some implementations, a user can submit drone task data through themap interface 252. For example, the map interface 252 can allow a userto select a location for a drone task (e.g., a land survey, livestockmonitoring, videography, or research and data collection). In someexamples, the user can define a drone task (e.g., an area of land to besurveyed) using a polygon selection tool 254. For example, the dronecontrol platform can generate a flight plan based on the selected area.

In some examples, a drone flight (e.g., waypoints 256) can be displayedon the map interface 252. In some examples, the drone control platformcan provide the user with a preview of the flight plan. For example, theGUI 250 can demonstrate the flight plan to the user by moving a droneicon 258 along the flight plan. In some examples, flight planinformation (e.g., expected battery status, speed, altitude, sensoroperations) can be displayed to a user as the icon 258 moves along theflight plan. In some examples, the flight plan preview can provide theuser with simulated data collections (e.g., in the flight visualizationwindow 260). For example, the drone control platform can simulate thedrone flight along the flight path based on satellite imagery.

In some examples, a warning 270 can be displayed if a flight task cannotbe accomplished. For example, as depicted in FIG. 2B a portion of theflight area selected using the polygon selection tool is withinrestricted airspace. Therefore, in the depicted example, the dronecontrol platform provides a warning to notify the user that the flightplan will not include the restricted airspace and will direct the droneto avoid the restricted airspace.

FIG. 3A depicts example drone approach corridors 300, 302, 303, 303 inaccordance with implementations of the present disclosure. The droneapproach corridors 300, 302, 303, 303 are provided as volumes ofairspace extending from an area 304 above a target location (e.g., aground-level location 306 or a rooftop location 308) to the targetlocation 306, 308. In some examples, the area above the target locations306, 308 may be a flight corridor (e.g., a drone highway). In someexamples, drone approach corridors 300, 302, 303, 303 may enable safedrone operations (e.g., drone-based object pickup and delivery) nearcommonly used target locations 306, 308, such as target locations 306,308 located in residential or commercial areas. For example, droneapproach corridors 300, 302, 303 may provide drones 106 with flightpaths and protocols for safely navigating the drone approach corridor300, 302, 303 and avoiding obstructions 310 in and around targetlocations 306, 308.

In some implementations, drone approach corridors 300, 302, 303 can beassociated with an ADLD 320A, 320B, 320C. As noted above and discussedin more detail below, an ADLD 320A, 320B, 320C can guide a drone's 106approach to a landing site within an associated drone approach corridor(e.g., one of 300, 302, 303). For example, ADLD 320A is associated withdrone approach corridor 300. ADLD 320A is an example of a private user'sADLD. For example, ADLD 320A is used by a private user to configure alanding site (e.g., target location 306) and drone approach corridor 300for drone based object pick-up and delivery at the user's home. ADLD320B is associated with drone approach corridor 302. ADLD 320B is anexample of a business user's ADLD. For example, ADLD 320B may representmultiple ADLD's and may be used by a business to configure one or morelanding sites (e.g., target location 308) and drone approach corridors302 for drone based object pick-up and delivery at a business location(e.g., an office building, shopping center, industrial park, warehousesite, individual businesses, etc.). ADLD 320C is associated with droneapproach corridor 303. ADLD 320C is an example of a drone charging ADLD.For example, ADLDs 320C may be used by a drone service business toconfigure landing sites and drone approach corridors 303 for drone's 106to recharge. The ADLD's 320A, 320B, 320C can communicate with thecomputing systems 102 through a network communication interface (e.g.,an LTE or WiFi interface). For example, ADLD's 320B and 320C maycommunicate with the computing systems 102 through an LTE interface,while ADLD 320A may communicate with the computing systems 102 throughthe user's 324 WiFi network 326.

For example, the drone approach corridors 300, 302, 303 can be definedbased on a plurality of attributes that regulate drone operations withinthe associated airspace. The drone approach corridors 300, 302, 303 caninclude attributes that define, for example, the location of the droneapproach corridor 300, 302, 303 (e.g., geographical coordinates of anentry point for a drone approach corridor 300, 302, 303 and the targetlocation 306, 308 associated with the drone approach corridor 300, 302,303), boundaries of the drone approach corridor 300, 302, 303,procedures for drones to request access to the drone approach corridor300, 302, 303, and collision avoidance protocols for drone operationswithin the drone approach corridor 300, 302, 303. In some examples,collision avoidance protocols can be defined for drones to detect andavoid ground obstructions 310 within or near a drone approach corridor(e.g., power lines, tree branches, animals, or people). Collisionavoidance protocols can include, for example, drone size limitations fora particular drone approach corridor 300, 302, 303, drone performancelimitations for a particular drone approach corridor 300, 302, 303,environmental limitations (e.g., wind speed) for entering a droneapproach corridor 300, 302, 303, standoff distances 312 fromobstructions 310 inside or near the drone approach corridor 300, 302,303, speed limits (e.g., descent/ascent rate limits) within the droneapproach corridor 300, 302, 303, one or more secondary drone approachcorridors 300, 302, 303, and battery state restrictions within the droneapproach corridor 300, 302, 303 (e.g., required minimum charge level totakeoff or enter the drone approach corridor 300, 302, 303). In someexamples, data defining the drone approach corridors 300, 302, 303 canbe stored by a drone control platform, such as a drone control platformhosted by computing cloud 101. For example, the data defining aplurality of drone approach corridors 300, 302, 303 can be stored bycomputing systems 102 of the computing cloud 101.

In some implementations, an ADLD 320A, 320B, 320C defines or aids indefining an associated drone approach corridor 300, 302, 303, andregisters the corridor with the drone control platform. For example,with reference to ADLD 320A, the ADLD 320A can establish a droneapproach corridor during a configuration phase. For example, after auser 324 places an ADLD 320A at a desired drone landing location 306(e.g., in the user's yard) and powers on the ADLD 320A, the ADLD 320Acan initiate a configuration process. During the configuration process,the ADLD 320A can perform several diagnostic checks to, for example,verify the airspace above the ADLD 320A is free of obstructions 310(e.g., absence of tree branches, powerlines, etc.), establish a droneapproach corridor 300, verify that the drone landing pad associated withthe ADLD 320A is sufficiently level for a drone 106 to land, and/ordetermine the geographic location of the ADLD 320A (e.g., latitude,longitude, and altitude—if located on a structure above the ground). Forexample, the ADLD 320A can obtain an image of the airspace above theADLD 320A (e.g., using an imaging sensor). The ADLD can analyze theimage to verify that there are no obstructions 310 (e.g., power lines,tree branches) in the airspace between the ADLD 320A and the area 304above the ADLD 320A (e.g., a drone highway). In some examples, the ADLDcan use radar or sonar (e.g., transceivers or transducers) to generateimages and detect obstructions in the airspace above the ADLD 320A. Inaddition, the ADLD 320A can monitor the airspace in a similar manner todetect new obstructions after the configuration phase.

For example, the ADLD 320A can obtain multiple images using differentfields of view (FOV) to search for obstructions at different ranges(e.g., altitudes above the ADLD 320A. Each FOV in a scale of FOVscorresponds to a particular area of airspace at a given range. Forexample, a first FOV, to search for obstructions 310 near ground level,may be approximately 90° and m may correspond to area of airspace with adiameter of approximately 10 ft at a range of approximately 10 ft abovethe ADLD 320A. Similarly, a second FOV to search for obstructions at amedium distance above the ADLD 320A may be approximately 22.5° and maycorrespond to area of airspace with a diameter of approximately 10 ft ata range of approximately 50 ft above the ADLD 320A. And, a third FOV tosearch for obstructions at a further distance above the ADLD 320A may beapproximately 11.5° and may correspond to area of airspace with adiameter of approximately 10 ft at a range of approximately 100 ft abovethe ADLD 320A. Furthermore, images may be analyzed using objectdetection algorithm either by the ADLD 320A or sent to the drone controlplatform to be analyzed. In addition, the pixel sizes in each image canbe mapped to appropriate distances within each image, based on the FOVof the image, for example, to determine a size of an obstruction 310 andor a distance of an obstruction from a desired drone approach corridor300 boundary.

If there are no obstructions, the ADLD 320A can define the volume ofairspace as a new drone approach corridor. In some examples, the dronecontrol platform can define the new drone approach corridor based ondata received from the ADLD 320A. If there are obstructions within thevolume of airspace, the ADLD 320A can notify the user 324 of theobstructions. In some examples, the ADLD 320A can provide the user 324with an image (or other means of feedback) of the airspace including anannotation identifying any obstruction 310. For example, the ADLD 320Acan send the notification and image to the user's computing device 322or, in some examples, display the image on a display of the ADLD 320A.

In some examples, the ADLD 320A can verify the orientation of a landingpad to determine whether the landing pad is sufficiently level for adrone 106 to land. For example, the ADLD 320A can determine based onorientation sensor data whether the ADLD is sufficiently level for adrone to land on the landing pad. If not, the ADLD 320A can send anotification to the user's 324 computing device 322 instructing the user324 to level the ADLD 320A.

In some implementations, the ADLD 320A can register with the dronecontrol platform, for instance, to confirm that the ADLD 320A is readyto receive drones. For example, after the ADLD 320A completes theconfiguration phase, the ADLD 320A can send registration information tothe drone control platform. Registration information can include, but isnot limited to, a unique identifier assigned to the ADLD 320A (e.g., aserial number), location of the ADLD 320A, user 324 information (e.g., alogin identity and password for the platform or a drone delivery system,and user contact information), secondary ADLDs or drone approachcorridors associated with the ADLD 320A (e.g., a backup ADLD or approachcorridor), and data defining the drone approach corridor 300 associatedwith the ADLD 320A (e.g., location and boundaries of the corridor) orADLD sensor data that the drone control platform can use to define anapproach corridor 300 associated with the ADLD 320A. The drone controlplatform can use the ADLD 320A registration data to coordinate, with theADLD 320A, for drone approaches and landings at the ADLD's landing pad.

In some examples, the ADLD 320A can communicate with the user's 324computing device 322 through an application on the computing device 322.For example, the application can guide a user 324to configure an ADLD320A and, as discussed more below, alert the user 324 ofarriving/scheduled drone deliveries and problems or maintenanceassociated with the ADLD 320A or drone approach corridor 300 (e.g., aneed to remove obstructions 310 or reposition the ADLD 320A).

In some examples, a drone control platform can control access to droneapproach corridors 300, 302, 303 by multiple drones 106. In someexamples, the drone control platform can coordinate drone 106 access tohundreds, thousands, or even millions of drone approach corridors 300,302, 303 across one or more geographic areas. More specifically, a dronecontrol platform can be used to coordinate the ascent/descent ofmultiple drones 106 within the same drone approach corridor 300, 302,303. In some examples, the drone control platform can use an entryrequest protocol to coordinate drone entry into and ascents/descentswithin a drone approach corridor. For example, a drone 106 may not bepermitted to enter a drone approach corridor 300, 302, 303 until thedrone requests an approach (e.g., ascent, descent) in the particulardrone approach corridor 300, 302, 303, and the request is granted by theplatform. For example, if a first drone 106 has received permission toperform an approach in a particular drone approach corridor 300, 302,303, and a second drone 106 requests to enter the same drone approachcorridor 300, 302, 303, the drone control platform will deny the seconddrone's 106 request to enter the drone approach corridor. As anotherexample, if an ADLD 320A, 320B, 320C, associated with a particular droneapproach corridor 300, 302, 303 indicates that the corridor isunavailable (e.g., obstructed), the drone control platform will deny thesecond drone's 106 request to enter the drone approach corridor.

In some examples, if the second drone's 106 request is denied, the dronecontrol platform can define a holding pattern for the second drone 106,or re-route the second drone 106 to and grant the second drone 106access to enter a secondary drone approach corridor. In some examples, aholding pattern can be located outside a drone highway. In someexamples, a drone approach corridor 300, 302, 303 can be associated withone or more secondary drone approach corridors (and associated ADLDs). Asecondary drone approach corridor can be, for example, a flightpathalong a different route to the same target location as the primary droneapproach corridor, or another drone approach corridor that leads to thesame target location or a different target location within the samegeographic vicinity as the primary drone approach corridor. For example,the secondary drone approach corridor can be a drone approach corridorthat leads to a target location that is nearest, geographically, to thetarget location of the primary drone approach corridor (e.g., aneighbor's ADLD). In another example, the secondary drone approachcorridor can be a drone approach corridor that leads to a targetlocation that is in some way associated with the target location of theprimary drone approach corridor (e.g., the target locations of both theprimary and secondary corridors may be on the same property).

In some examples, when a drone 106 is granted permission to enter adrone approach corridor (e.g., drone approach corridor 300), the dronecontrol platform can send a notification to the associated ADLD (e.g.,ADLD 320A) that indicates that the drone 106 has or will be entering thecorridor 300. The ADLD 320A can guide the drone to land on a landing padat the target location 306. For example, a drone 106 can request toenter a drone approach corridor 300 associated with the ADLD 320A. Insome examples, the drone 106 can send a request to enter the droneapproach corridor to the drone control platform. The drone controlplatform can monitor the status of the ADLD 320A (e.g., whether the ADLD320A is online, obstructed, or currently has another drone landing), andeither grant or deny the request based on the ADLD's 320A status. If therequest is granted, either the drone control platform or the drone 106itself can indicate to the ADLD 320A when the drone enters the droneapproach corridor.

The ADLD 320A can guide the drone 106 along the approach corridor 300 tothe landing pad once the drone's 106 request is granted and the ADLD320A receives an indication that the drone 106 has entered the approachcorridor 300. For example, the ADLD 320A can identify the drone's 106position within the corridor using an imaging sensor (e.g., camera,radar, or sonar), and issue appropriate course corrections to the drone106 to guide the drone 106 along the corridor 300. For example, the ADLD320A can determine from images of the drone's horizontal position withinthe corridor that the drone 106 is approaching a boundary of thecorridor 300, and issue appropriate course corrections to the drone 106to re-center the drone 106 in the corridor 300. For example, the ADLD320A can determine a drone's 106 distance above the ADLD 320A based on aradar range obtained by a sensor on the ADLD 320A or from altitude datacommunicated to the ADLD 320A from the drone 106. The ADLD 320A candetermine the drone's 106 proximity to corridor 300 boundaries based onthe FOV of the images, pixels sizes, and the drone's 106 distance fromthe ADLD 320A. In some examples, the ADLD 320A can use other positionfinding techniques to locate the drone within the approach corridor andguide it to the landing pad (e.g., RF triangulation techniques, such asWiFi positioning).

The ADLD 320A can issue course corrections to guide the drone's approachto the landing pad based on the position of the drone within theapproach corridor 300. For example, the ADLD 320A can send coursecorrections either through direct communication with the drone 106(e.g., WiFi, RF, IR, Bluetooth) or through the drone control platform.In some examples, the ADLD 320A can have an IR camera, for example, todetect IR light sources on the drone 106. The ADLD 320A can detect theposition of the drone 106 based on the location of the drone's IR lightsources in an image of the approach corridor 300, and issue coursecorrections as appropriate.

In some implementations, the second data can be communicated to thedrone by varying lighting configurations on the ADLD or on the landingpad of the ADLD. For example, illuminating lights (e.g., visible or IRlights) on one side of the landing pad can instruct the drone to alterits course towards or away from that side of the landing pad. Variouslight flashing patterns, flashing frequencies, or light wavelengths(e.g., colors) can be used to instruct the drone how much to altercourse or to alter a rate of descent/ascent.

In some implementations, the ADLD 320A can illuminate landing guidancelights (e.g., IR lights at the perimeter of the landing pad) to guidethe drone 106 to the landing pad. For example, the drone 106 can includeinfrared sensors (e.g., an IR camera). The drone 106 can use the landingguidance lights to determine its own position within the approachcorridor 300. In some examples, a drone can use the ADLD's 320A landingguidance lights in conjunction with the course corrections from the ADLD320A to land on the landing pad.

In some implementations, the ADLD 320A can provide status updates to thedrone control platform. For example, the ADLD 320A can detect if thelanding pad or drone approach corridor 300 becomes obstructed, andinform the drone control platform. In such situations, the drone controlplatform can deny all drone requests to land at the ADLD 320A until theobstruction is cleared. In addition, the ADLD 320A or the drone controlplatform can notify the user 324 that the ADLD 320A is obstructed sothat the user 324 can remove the obstruction or reposition the ADLD 320Aand landing pad.

In some implementations, the ADLD 320A includes visual and/or audibleindicators to alert bystanders (e.g., user 324) that a drone 106 isentering the drone approach corridor and will be landing at the landingsite. Visual indicators can include, for example, lights (e.g., flashingLEDs or strobe lights), and audible indicators can include, for example,a siren, alarm, or verbal messages. For example, when the ADLD 320Areceives an indication that a drone is entering the drone approachcorridor 300, the ADLD 320A can initiate the visual or audibleindicators to alert any bystanders of the approaching drone 106. In someimplementations, the ADLD 320A includes a proximity sensor to detectwhen an object (e.g., a person, animal) is within a threshold distance(e.g., a safety distance) of the ADLD 320A during a drone 106 ascent ordescent. For example, if the ADLD 320A detects an object within a safetyarea, the ADLD can instruct a descending drone 106 to stop its approachto the landing pad. For example, the ADLD 320A can instruct the drone106 to abort its descent, exit the drone approach corridor, hover untilthe object (e.g., person) leaves the safety area, or re-route the drone106 to a secondary ADLD.

In some implementations, ADLD 320A communications with drones areagnostic to drone flight controllers. For example, the ADLD 320A caninclude adapters that enables it to communicate course corrections toany drone flight controller in a format that can be executed by theflight controllers.

In some implementations, the drone control platform coordinates the useof drone approach corridors in advance of a drone 106 requesting anapproach using a particular drone approach corridor 300, 302, 303. Forexample, the drone control platform can schedule multiple drone 106approaches for a drone approach corridor 300, 302, 303 in advance ofeach drone 106 actually requesting entry into the drone approachcorridor 300, 302, 303. For example, the platform can coordinate droneflight plans such that each of multiple drones 106 arrive at aparticular drone approach corridor at different times. For example,drone arrival times at a drone approach corridor 300, 302, 303 can besufficiently spaced, such that each drone 106 has sufficient time todescend, perform one or more tasks (e.g., pickup or deliver objects),and ascend prior to a second drone 106 reaching the approach corridor300, 302, 303. In some examples, the drone control platform cancoordinate drone arrival times at a drone approach corridor 300, 302,303 by modifying characteristics of each drone's 106 flight plan (e.g.,takeoff times, airspeed, waypoints, charge locations, intervening tasks,etc.).

Although the drone approach corridors 300, 302, 303 depicted in FIG. 3Aare illustrated as vertical columns of airspace extending from an area304 above a target location to the target location 306, 308, it shouldbe appreciated that drone approach corridors 300, 302, 303 can bedefined to occupy paths of airspace having varying shapes or geometriesfrom an area 304 above a target location (e.g., a drone highway) to thetarget location 306, 308. For example, a drone approach corridor 300,302, 303 can be defined as a bounded paths of airspace that includesmultiple portions at varying angles to guide a drone to and from atarget location. Furthermore, an entry point for a drone approachcorridor 300, 302, 303 need not be directly above the associated targetlocation. In some examples, drone approach corridors 300, 302, 303 caninclude branches where each branch leads to different target locations.

In some implementations, some ADLDs (e.g., ADLD 320C) can be designatedfor a particular purpose. For example, ADLD 320C is depicted as a dronecharging ADLD. For example, the ADLD 320C may be located on top of ornear a convenient power source (e.g., power lines). In some examples, abusiness that runs the drone control platform may distribute andmaintain a network of designated drone charging ADLDs 320C to servicedrones 106 controlled by the platform.

FIG. 3B depicts a block diagram of an example ADLD 320 in accordancewith implementations of the present disclosure. The ADLD 320 includesone or more processors 330, a computer-readable memory device 332,several sensors (e.g., sensors 334, 336, 338, 340), an electroniccommunications interface 342, and a power source 344. In addition, theADLD 320 includes a landing pad 350. The processor(s) 330 can executeinstructions stored by the computer-readable memory device 332, controland receive data from the sensors 334, 336, 338, 340 and communicationsinterface 342, and can control other, optional, features of the ADLD 320described below.

The sensors can include, for example, airspace sensors 334, orientationsensors 336, location sensors 338, and proximity sensors 340. Theairspace sensors 334 can include imaging and ranging sensor (e.g., acamera, radar transceivers, sonar transducers). The airspace sensors 334are configured to obtain data indicating obstructions located in or nearthe airspace above the landing pad 350. For example, the airspacessensors 334 can obtain images of the airspace above the landing pad 350.The ADLD 320 or the drone control platform can use the images to detectobstructions in the airspace and define boundaries for a drone approachcorridor. In addition, the airspace monitors are configured to obtaindata indicating the position of drones within a drone approach corridor(e.g., the position of a drone in relation to boundaries of a droneapproach corridor). The drone position data can include, for example,visible, IR, radar, or sonar images of the drone within the approachcorridor, RF triangulation data, radar or sonar ranging data, or WiFipositioning data. The ADLD 320 can use the drone position data tomonitor the position of a drone flying within a drone approach corridorabove the landing pad 350 and guide the drone in landing at the landingpad 350.

The orientation sensors 336 can be configured to provide data relatedthe orientation of the landing pad 350. For example, orientation sensors336 can include electronic levels or accelerometers that are configuredto detect the orientation of the landing pad 350 with respect todirection of a gravitational force. The ADLD 320 can use the orientationdata to determine whether the landing pad 350 is sufficiently level fora drone to land on the landing pad 350. In some examples, theorientation data can be used to determine the line of sight of airspacesensors 334. In some implementations (not shown), the landing pad 350 isseparate from the ADLD and the orientations sensors 336 can beintegrated with or attached to the landing pad 350. In suchimplementations, the orientation sensors 336 can be coupled with theprocessor 330 of the ADLD 320, for example, by a wired or wireless datalink.

The location sensors 338 can be configured to provide data related thelocation of the ADLD 320. For example, location sensors 338 can includeGPS receivers or WiFi positioning system sensors. The ADLD 320 can usethe location data to register the location of the ADLD 320 and theassociated drone approach corridor with the drone control platform. Insome examples, the location data can be used in conjunction with theairspace data and orientation data to determine an entry point for adrone approach from a drone highway. For example, the angle of thelanding pad 350 and airspace sensors 334 can be used to determine thelocation of a vertical (e.g., with respect to the ground or gravity)portion of the drone approach corridor with respect to a drone highway.For example, angle of the landing pad 350 and airspace sensors 334 canbe used to determine a displacement of an upper end of the verticalportion of the drone approach corridor with respect to the location ofthe ADLD 320 on the ground.

The proximity sensors 340 can be configured to detect objects (e.g.,people or animals) that are within a threshold distance of the landingpad 350. For example, the ADLD 320 can use the proximity sensor data todetermine whether person or animal is too close (e.g., within athreshold safety distance) of the landing pad 350 when a drone isapproaching.

The electronic communications interface 342 can include, for example, acomputer network communication interface (e.g., a WiFi or Bluetoothinterface), a cellular communication interface (e.g., an LTE interface),and/or an RF communication interface. The electronic communicationsinterface 342 can be configured to communicate with computing systemsthat host a drone control platform, drone flight controllers, and usercomputing devices (e.g., computing device 322 of FIG. 3A). In someexamples, the electronic communications interface 342 can includeadapters that enables the ADLD 320 to communicate flight controlleragnostic course corrections to any drone flight controller in a formatthat can be executed by the flight controllers.

The power supply 344 provides power to the ADLD 320. The power supply344 can be a self-contained power supply (e.g., a battery) or aconnection to an external power supply (e.g., a power converter andconnection cable).

In some examples, the ADLD 320 can include a warning device 346. Forexample, the warning device 346 can include visual and/or audibleindicators to alert bystanders that a drone entering the drone approachcorridor and will be landing. Visual indicators can include, forexample, lights (e.g., flashing LEDs, strobe lights), and audibleindicators can include, for example, a siren, alarm, or verbal warningsystem. For example, when the ADLD 320 receives an indication that adrone is entering an associated drone approach corridor, the ADLD 320can initiate the warning device 346 to alert bystanders of theapproaching drone.

In some examples, the ADLD 320 can include a charging station 348. Forexample, the drone charging station 348 can be integrated with thelanding pad 350 so that a drone that lands at the landing pad 350 can berecharged (e.g., while waiting for instructions to take-off). Thecharging station can provide power from the power source 344 to rechargea drone's batteries while it is located on the landing pad 350. In someexamples, the charging station 348 can be a wireless power transferdevice (e.g., a wireless charging station) that uses electromagneticresonance to transfer energy to a drone's battery.

In some examples, the landing pad 350 can include a plurality of lightsources 352 to guide a drone's approach to the landing pad 350. Forexample, the lights sources 352 can be located around the perimeter ofthe landing pad 350. The light sources 352 can be, for example, visibleor IR light sources.

In some implementations, (as shown) the ADLD 320 is integrated with thelanding pad 350 (e.g., the landing pad can be on an upper surface of theADLD 320). In some implementations (not shown), the landing pad 320 canbe separate from the ADLD 320. Although separate, in suchimplementations, the landing pad 350 can be coupled to the ADLD 320(e.g., through a wired or wireless data link) to communicate data andcontrol signals between the ADLD 320 and sensors (e.g., orientationsensors 336) and/or light sources 352 attached to the landing pad 350.

FIG. 3C depicts an example network of ADLDs 360 in accordance withimplementations of the present disclosure. The network of ADLDs 360includes multiple ADLDs 320D-320G that are registered with a dronecontrol platform. The ADLDs 320D-320G are each in communication with thecloud computing system 101. For example, the ADLDs 320 may be configuredby users for landing drones at various houses 362 within a neighborhood,businesses at a shopping center or business park, warehouses at ashipping facility, etc.

In some examples, ADLD users can select one or more secondary (e.g.,backup) ADLDs 320D-320G for drones in case the user's ADLD 320D-320Gbecomes obstructed or otherwise inoperable. For example, a user of ADLD320D can designate a neighbor's ADLD (e.g., ADLD 320E) as a backuplanding location and approach corridor for the user's ADLD 320D. If theuser's ADLD 320D becomes obstructed, the drone control platform canreroute drones that request to land at the user's landing site to theuser's designated backup ADLD 320E.

In some examples, a particular ADLD (e.g., ADLD 320G) can be associatedwith multiple users. For example, ADLD 320G may be associated with adrone landing site that is shared by members of a neighborhood orseveral businesses in a shopping center. In such examples, when the ADLD320G registers with the drone control platform, the registrationinformation can include information related to each of the shared users(e.g., drone delivery account information and contact information). Insome examples, the drone control platform can use the users' informationto inform the appropriate user when a drone is delivering an object forthe user. In some examples, the drone control platform can also use theusers' information to inform businesses that support drone based objectpickup or delivery of users that are authorized to received/send objectsfrom the ADLD 320G.

FIGS. 4-7 depict flowcharts of respective example processes that can beexecuted in accordance with implementations of the present disclosure.As discussed above, a drone control platform can control drone flightsduring various flight stages including: a pre-flight stage, an in-flightstage, and a post-flight stage. The following flowcharts illustrateexample flight control processes for each of a pre-flight stage, anin-flight stage, and a post-flight stage.

FIG. 4 is a flowchart illustrating an example process 400 during apre-flight stage that can be executed in accordance with implementationsof the present disclosure. In some implementations, the example process400 can be realized using one or more computer-executable programs thatare executed using one or more computing devices (e.g., a cloudcomputing system 101, as shown in FIG. 1 and described above). In someimplementations, the example process 400 can be used for generating adrone flight plan.

Flight task data is received (402). For example, a user can submitflight task data identifying a desired flight task for a drone. In someexamples, the flight task data can designate a drone and/or a sensorpackage for executing the task (404). For example, a user requesting adrone flight plan may designate a drone type and sensor package. If so,process proceeds to step 410. If not, the drone control platform canselect a drone (406) and a sensor package (408). For example, a user canregister a drone inventory with the drone control platform. The dronecontrol platform can select an appropriate drone and sensor package toperform the flight task based on the flight task data and the user'sregistered inventory. In some examples, the drone control platform canpair a drone service requestor with a drone service provider and selectan appropriate drone to execute requested task from the drone serviceprovider's registered drone inventory. In some examples, the dronecontrol platform can select a drone based on drone performance metricsbased on historical flight data from a computer learning system.

A flight plan is generated for the drone (410). For example, the dronecontrol platform can generate a flight plan based on the flight taskdata. In some examples, the drone control platform can generate a flightplan based on the flight task data and additional information stored bythe drone control platform (e.g., drone performance metrics) and/orthird-party information (e.g., weather information, land topographyinformation, and airspace information). In some examples, the flightplan is flight controller agnostic. The drone's flight controller typeis identified (412). The flight plan is converted to a format compatiblewith the drone's flight controller (414). For example, the drone controlplatform can adapt a flight controller agnostic flight plan to a formatthat is executable by the drone's particular type of flight controller.

The flight plan is provided to the drone 416. In some examples, theflight plan can be transmitted directly to the drone. In some examples,the flight plan can be transmitted to a user's computing device, and theuser can upload the flight plan to the drone.

In some examples, the flight plan can be reevaluated occasionally orregularly before the flight plan is executed. For example, process 400(or portions thereof) can be repeated before the flight plan isexecuted. For example, third-party information (e.g., FAA information,weather information, etc.) can be monitored to check for changes orupdates. For example, if weather conditions become unsuitable for theflight, the flight plane can be rescheduled and the user informed of thechange. As another example, if the FAA establishes a temporary flightrestriction (TFR) that affects the flight plan (e.g., the President maybe visiting an area over which the drone is scheduled to fly), theflight plan can be modified (e.g., a waypoint moved) or the flightrescheduled in accordance with the TFR.

FIG. 5 is a flowchart illustrating an example process 500 during anin-flight stage that can be executed in accordance with implementationsof the present disclosure. In some implementations, the example process500 can be realized using one or more computer-executable programs thatare executed using one or more computing devices (e.g., a cloudcomputing system 101, as shown in FIG. 1 and described above). In someimplementations, the example process 500 can be used for executing adrone flight plan.

A flight plan is provided to a drone (502). For example, a flight plancan be generated and provided to a drone as discussed above in referenceto process 400. Pre-flight data is received (504). For example, thedrone control platform can obtain pre-flight data from the drone,third-party systems, or the drone control platform itself (e.g., datarelated to other drone flight plans). Pre-flight data can include, forexample, diagnostic data received from the drone, environmental data,and airspace data. For example, pre-flight diagnostic data can includethe location of the drone, battery status, and other appropriate data.Environmental data can include, for example, current weather conditions.Airspace data can include, for example, information related to otheraircraft and drones that may interfere with the drone's flight plan.

It is determined whether the flight plan can be executed (506). Forexample, the drone control platform can determine based on thepre-flight data whether the drone can execute the flight plan or whetherthe flight plan must be modified. If it is determined that the drone cancomplete the flight plan, the process proceeds to step 512. If not, aflight plan modification is determined (508). For example, the dronecontrol platform can modify the flight plan based on the pre-flightdata. Modifications can include, for example, scheduling changes,changes to waypoints, changes to flight profiles between waypoints,changes to planned sensor operations, the flight can be delayed orcanceled, or all or part of the flight plan can be sent to a seconddrone. For example, a portion of the flight plan can be shared with asecond drone if the pre-flight data indicates that the first drone willno longer have the endurance to complete the entire flight plan.

The flight plan modification is provided to the drone (510). In someexamples, the flight plan modification can be transmitted directly tothe drone. In some examples, the flight plan modification can betransmitted to a user's computing device, and the user can upload theflight plan to the drone. The drone is cleared to execute the flightplan (512). For example, the drone can be provided with a command tobegin execution of the flight plan. Flight data is received (514). Thedrone can send flight data to the drone control platform while the droneis in-flight executing the flight plan. The flight data can include, forexample, battery status, speed, altitude, location data (e.g., GPSdata), and sensor data (e.g., data obtained by the drones sensor packagesuch as camera images).

It is determined whether a flight plan modification is required (516).For example, the drone control platform can determine whether amodification of the flight plan is needed based on the flight datareceived from the drone. In some examples, the drone control platformcan determine whether a modification of the flight plan is needed basedon other drone control platform data (e.g., flight plans for otherdrones) and information from third-party systems (e.g., weather data,airspace data). For example, the drone control platform can predictwhether the drone will have the endurance required to complete theflight plan. The drone control platform can determine whether the droneis obtaining good sensor data. The drone control platform can determinewhether the flight plan should be modified based on external conditions(e.g., weather or unexpected air traffic).

If a modification is not needed, the process proceeds to step 522.Otherwise, a flight plan modification is determined (518). For example,the drone control platform can modify the flight plan based on the droneflight data, other drone control platform data, or environmental data.In-flight modifications can include, for example, changes to waypoints,changes to flight profiles between waypoints, changes to sensoroperations, the arrivals at flight destinations can be rescheduled, aflight destination can be replaced (e.g., with a backup destination), ora portion of the flight plan can be canceled and sent to a second drone.

The flight plan modification is provided to the drone (520). Forexample, the flight plan modification can be provided to the drone asdescribed above. If the flight is not complete (522), the processreturns to step 514. If the flight is complete, post-flight data isreceived (524). Post-flight data can include drone flight data andsensor data that was not previously received. In some examples,post-flight data includes all of the flight data and sensor dataobtained during execution of the flight plan as well as any flight planmodifications sent to the drone.

FIG. 6 is a flowchart illustrating an example process 600 during apost-flight stage that can be executed in accordance withimplementations of the present disclosure. In some implementations, theexample process 600 can be realized using one or morecomputer-executable programs that are executed using one or morecomputing devices (e.g., a cloud computing system 101, as shown in FIG.1 and described above). In some implementations, the example process 600can be used for evaluating the execution of a drone flight plan.

Post-flight data is received (602). For example, a flight plan can beexecuted and post-flight data received from a drone as discussed abovein reference to process 500. The post-flight data is processed (604).For example, the drone control platform can process the post flight datato generate flight deliverables for users. Flight planning database(s)are updated (606). For example, the drone control platform can performcomputer learning analysis on the post-flight data to update flightplanning databases. For example, flight planning databases can includedata such as, but not limited to, location profiles, drone performancemetric profiles, and sensor package performance profiles.

It is determined whether the task was completed (608). The drone controlplatform can analyze the post-flight data to determine whether thetask(s) associated with the flight plan were complete. If so,post-flight deliverables can be provided to a user (610). If not, are-tasking flight plan is generated (612). For example, the dronecontrol platform can generate a re-tasking flight plan to complete anytasks that were not completed. The re-tasking flight plan is convertedto a format compatible with the drone's flight controller (614). Forexample, the drone control platform can adapt a flight controlleragnostic flight plan to a format that is executable by the drone'sparticular type of flight controller. The re-tasking flight plan isprovided to the drone (616), and executed as described above inreference to process 500.

FIG. 7 is a flowchart illustrating an example process 700 of controllingdrone access to a drone approach corridor that can be executed inaccordance with implementations of the present disclosure. In someimplementations, the example process 700 can be realized using one ormore computer-executable programs that are executed using one or morecomputing devices (e.g., a cloud computing system 101, as shown in FIG.1 and described above). In some implementations, the example process 700can be used for controlling drone approaches to and/or landings at ageographical location.

A request for a drone to entry a drone approach corridor is received(702). For example, a drone can send a drone approach corridor entryrequest to a drone control platform. The request can include, forexample, an identity of the drone approach corridor (e.g., a serialnumber), a location of the corridor or an identity of a target locationassociated with the corridor, an identity of the requesting drone,information about the requesting drone (e.g., battery charge status),environmental information (e.g., current wind speed/weather conditions),and a duration of time that the drone will occupy the corridor. In someexamples, the drone submitting the request may have been pre-scheduledto enter the dream approach corridor. In such examples, the request caninclude simply an identity of the drone that can be verified againstdrone approach corridor scheduling data.

It is determined whether the drone approach corridor is available forthe requesting drone to enter (704), and a response to the droneapproach entry request is sent to the requesting drone (706). The dronecorridor may be available for the requesting drone to enter so long as,for example, the corridor is not occupied by another drone, is notscheduled to be occupied by another drone within a predetermined timefrom receipt of the request, has not become inaccessible (e.g., by anobstruction, such as a fallen tree branch), the requesting drone doesnot violate a collision avoidance protocol of the drone approachcorridor (e.g. the requesting drone is not too large to enter thecorridor), or the environmental conditions do not violate a collisionavoidance protocol of the drone approach corridor (e.g., the wind speeddoes not exceed a maximum value for safe operation/navigation within thecorridor).

For example, determining whether the drone approach corridor isavailable for the requesting drone to enter can include determining thatanother drone is not present in or scheduled to use the drone approachcorridor. For example, the drone control platform may have previouslygranted permission for a first drone to enter the drone approachcorridor and may receive a request to enter the same corridor from asecond drone before receiving a notification that the first drone hasexited the corridor. In such situations, the drone control platform candeny or delay granting access permission to the requesting drone.

In another example, the drone control platform may receive a request toenter a drone approach corridor at a time that would not permitsufficient time for the requesting drone to enter and exit the corridorbefore a time that another drone is pre-scheduled to use the corridor.In such situations, the drone control platform can deny or delaygranting access permission to the requesting drone. On the other hand,the platform can grant permission for the requesting drone to access thecorridor, if, at the time the request is received, there would besufficient time before the arrival of the pre-scheduled drone for therequesting drone to enter and exit the drone approach corridor.

In some examples, the drone control platform can determine whether adrone approach corridor is available for a requesting drone to enter bycomparing a time of the request and an identity of the requesting droneto a corridor access schedule. If the requesting drone is pre-scheduledto enter the drone approach corridor and the time of the requestcorresponds to the drone's scheduled drone approach corridor accesstime, the platform can grant the corridor access request.

In some examples, the drone control platform can determine, for example,from drone flight data or an ADLD that a drone approach corridor isobstructed and unsafe for drone operations. In some examples, the dronecontrol platform can determine that a drone approach corridor isunavailable if the platform does not receive a liveness signal (e.g.,heartbeat signal) from an associated ADLD within a predetermined periodof time, thus indicating that the ADLD is offline. In such examples, theplatform can deny access to the requesting drone. In some examples, theplatform can re-route the requesting drone to a secondary drone approachcorridor.

If the response grants entry (708), the requesting drone has permissionto enter the drone approach corridor. In some implementations, sensordata that is associated with the drone approach corridor can be receivedfrom the requesting drone (710). For example, the sensor data caninclude images of the target location and flight profile information(e.g., speed, location, altitude, descent/ascent rate, etc.) of therequesting drone as it navigates the drone approach corridor. Ifnecessary, the drone approach corridor can be modified based on thereceived drone sensor data (712). For example, the sensor data can beanalyzed to determine whether and, if so, how to modify attributes ofthe drone approach corridor. For example, an analysis of images of thetarget location may reveal a new obstruction that could interfere withdrone operations within the drone approach corridor. In response,attributes of the drone approach corridor (e.g., the location,dimensions, or collision avoidance protocols (e.g., stand-off distances)can be modified to improve the safety of drone operations within thecorridor.

If the response denies entry (708), the requesting drone does not havepermission to enter the drone approach corridor. In someimplementations, the response to the requesting drone's entry requestcan identify a holding pattern for the requesting drone to fly whileawaiting permission to enter the drone approach. In some examples, theresponse to the requesting drone's entry request can identify asecondary drone approach corridor for the requesting drone to use. Forexample, the requesting drone's flight plan can be modified to provide aflight path for the holding pattern or for entering the secondary droneapproach corridor (714). As described above in reference to step 520 ofFIG. 5, the modification to the flight plan can be sent to therequesting drone. The modification can be sent with the response to thedrone's entry request, and executed as described above in reference toprocess 500.

In some examples, the drone control platform can receive drone approachcorridor entry requests from drones that are not controlled by theplatform or drones operating in accordance with flight plans that havenot been generated by the drone control platform. For example, therequesting drone may be controlled by or operating in accordance with aflight plan generated by a drone control system different from the dronecontrol platform or independent of a drone control platform. In suchexamples, when granting access to a drone approach corridor, the dronecontrol platform can provide a temporary flight plan to the requestingdrone that defines, for example, a flight path, approach to, andcollision avoidance protocols for entry into the approach corridor. Thetemporary flight plan can be a drone flight controller agnostic flightplan, and, as described above, can be converted to a format compatiblewith the requesting drone's flight controller. For example, the dronecontrol platform can adapt a flight controller agnostic flight plan to aformat that is executable by the requesting drone's particular type offlight controller.

FIG. 8 is a flowchart illustrating an example process 800 forconfiguring an ADLD that can be executed in accordance withimplementations of the present disclosure. In some implementations, theexample process 800 can be realized using one or morecomputer-executable programs that are executed by an ADLD (e.g., asshown in FIGS. 1 and 3A-3C, and described above). In someimplementations, the example process 800 can be used for initializing anew ADLD or reconfiguring an ADLD in a new location. In someimplementations, the example process 800 can be realized using one ormore computer-executable programs that are executed using one or morecomputing devices (e.g., a cloud computing system 101, as shown in FIG.1 and described above).

Data is received from an ADLD sensor (802). For example, the data caninclude data that represents the airspace above the ADLD (e.g., airspacedata), orientation data that indicates an orientation of a landing padassociated with an ADLD, and location data that indicates a geographiclocation of the ADLD. The airspace data can include, for example,visual, IR, radar, or sonar images of the airspace above the landingpad. The orientation data can include, for example, data from electroniclevels or accelerometers that are configured to detect the orientationof the landing pad with respect to direction of a gravitational force.Location data can include, for example, GPS or WiFi positioning datasuch as latitude, longitude, and, in some cases, altitude. In someimplementations, the data can be received from the ADLD by a dronecontrol platform.

Attributes to define a drone approach corridor are determined (804). Forexample, attributes to define a drone approach corridor can bedetermined based on the sensor data, the orientation data, and thelocation data. Attributes to define a drone approach corridor can beattributes that regulate drone operations within the associatedairspace. For example, attributes to define a drone approach corridorcan include, but are not limited to, a location of the drone approachcorridor (e.g., geographical coordinates of the ADLD and an entry pointfor a drone approach corridor from a drone highway), boundaries of thedrone approach corridor, procedures for drones to request access to thedrone approach corridor, and collision avoidance protocols for droneoperations within the drone approach corridor. For example, as describedabove, airspace data (e.g., images) can be used to determine boundariesfor a drone approach corridor and to identify obstructions near orwithin a drone approach corridor. For example, orientation data can beused determine whether the landing pad is sufficiently level for a droneto land on the landing pad. In some examples, the orientation data canbe used in conjunction with the airspace data to determine the line ofsight of airspace sensors on the ADLD.

In some examples, the location data can be used in conjunction with theairspace data and orientation data to determine an entry point for adrone approach from a drone highway. For example, the angle of thelanding pad and airspace sensors can be used to determine the locationof a vertical (e.g., with respect to the ground or gravity) portion ofthe drone approach corridor with respect to a drone highway. Forexample, angle of the landing pad and airspace sensors can be used todetermine a displacement of an upper end of the vertical portion of thedrone approach corridor with respect to the location of the ADLD on theground.

In some implementations, attributes of the drone approach corridor canbe determined by a drone control platform. In some implementations, someof attributes of the drone approach corridor can be determined by theADLD and some can be determined by the drone control platform.

The ADLD is registered with a drone control platform (806). For example,the ADLD can register with a drone control platform by sendingregistration information to the drone control platform. For example,registration information can include, but is not limited to, a uniqueidentifier assigned to the ADLD (e.g., a serial number), location of theADLD, user information (e.g., a login identity and password for theplatform or a drone delivery system, and user contact information),secondary ADLDs or drone approach corridors associated with the ADLD(e.g., a backup ADLD or approach corridor), and data defining the droneapproach corridor associated with the ADLD (e.g., location andboundaries of the corridor) or ADLD sensor data that the drone controlplatform can use to define an approach corridor associated with theADLD.

In some examples, an obstruction may be detected in the airspace abovethe ADLD from the sensor data. For example, a tree branch may beidentified in an image of the airspace. Upon determine that the airspaceis obstructed a user can be alerted to the obstruction. For example, anotification can be sent to the user's computing device to alert theuser to the obstruction. The notification can provide instructions forthe user to clear the airspace, for example, by moving the ADLD in aparticular direction away from the obstruction. In some examples, thenotification can include a graphical representation of the airspace andthe obstruction. In addition, the notification can be sent to the user'scomputing device through e-mail, SMS message, or through an application.For example, the notification can be sent through an ADLD application,which can display the graphical image and instructions to the user.

FIG. 9 is a flowchart illustrating an example process 900 forcoordinating a drone approach to a landing site with an ADLD that can beexecuted in accordance with implementations of the present disclosure.In some implementations, the example process 900 can be realized usingone or more computer-executable programs that are executed by an ADLD(e.g., as shown in FIGS. 1 and 3A-3C, and described above). In someimplementations, the example process 900 can be performed by an ADLD forguiding a drone's approach, descent, and/or ascent to/from a landingsite associated with the ADLD.

An indication that a drone has entered an airspace associated with anADLD is received (902). For example, the airspace can be defined, inpart, by a boundary. For example, the airspace can be a drone approachcorridor associated with the ADLD. In some examples, the indication canbe sent from a drone to the ADLD when the drone enters the droneapproach corridor associated with the ADLD. In some examples, theindication can be sent from a drone control platform to the ADLD whenthe drone enters the drone approach corridor associated with the ADLD.

First data is received from a sensor of the ADLD (904). For example, thefirst data can be airspace data received from an airspace sensor that isconfigured to monitor the airspace associated with an ADLD. The firstdata can be, for example, images of the airspace and position of thedrone within the airspace, radar or sonar range data indicating therange of the drone from the ADLD, or positioning data (e.g., RFtriangulation data or WiFi positioning data) indicating the positon ofthe drone within the airspace.

A position of the drone within the airspace is determined (906). Forexample, the position of the drone can be determined with respect to theboundary of the airspace. For example, the ADLD can determine a drone'sdistance above the ADLD based on a radar range obtained by a sensor onthe ADLD or from altitude data communicated to the ADLD from the drone.The ADLD can determine the drone's proximity to a boundary of theairspace based on a FOV of the images of the airspace, the size ofpixels in the image, and the drone's distance from the ADLD.

Second data is communicated to the drone to guide the drone's flightwithin the airspace (908). For example, the ADLD can determine coursecorrections for the drone based on the determined position of the dronewith respect to the boundary of the airspace. The ADLD can send thecourse corrections to guide the drone's approach to the landing padbased on the position of the drone within the approach corridor. Forexample, the ADLD can send course corrections either through directcommunication with the drone (e.g., WiFi, RF, IR, Bluetooth) or throughthe drone control platform.

In some implementations, the second data can be communicated to thedrone by varying lighting configurations on the ADLD or on the landingpad of the ADLD. For example, illuminating lights (e.g., visible or IRlights) on one side of the landing pad can instruct the drone to alterits course towards or away from that side of the landing pad. Variouslight flashing patterns, flashing frequencies, or light wavelengths(e.g., colors) can be used to instruct the drone how much to altercourse or to alter a rate of descent/ascent.

FIG. 10 is a schematic illustration of example computer systems 1000that can be used to execute implementations of the present disclosure.The system 1000 can be used for the operations described in associationwith the implementations described herein. For example, the system 1000may be included in any or all of the computing components discussedherein to include drone flight control systems and sensor packages; andautonomous drone landing devices. The system 1000 includes a processor1010, a memory 1020, a storage device 1030, and an input/output device1040. Each of the components 1010, 1020, 1030, 1040 are interconnectedusing a system bus 1050. The processor 1010 is capable of processinginstructions for execution within the system 1000. In oneimplementation, the processor 1010 is a single-threaded processor. Inanother implementation, the processor 1010 is a multi-threadedprocessor. The processor 1010 is capable of processing instructionsstored in the memory 1020 or on the storage device 1030 to displaygraphical information for a user interface on the input/output device1040.

The memory 1020 stores information within the system 1000. In oneimplementation, the memory 1020 is a computer-readable medium. In oneimplementation, the memory 1020 is a volatile memory unit. In anotherimplementation, the memory 1020 is a non-volatile memory unit. Thestorage device 1030 is capable of providing mass storage for the system1000. In one implementation, the storage device 1030 is acomputer-readable medium. In various different implementations, thestorage device 1030 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device. The input/output device 1040provides input/output operations for the system 1000. In oneimplementation, the input/output device 1040 includes a keyboard and/orpointing device. In another implementation, the input/output device 1040includes a display unit for displaying graphical user interfaces.

Implementations of the subject matter and the functional operationsdescribed in this specification can be implemented in digital electroniccircuitry, in tangibly-implemented computer software or firmware, incomputer hardware, including the structures disclosed in thisspecification and their structural equivalents, or in combinations ofone or more of them. Implementations of the subject matter described inthis specification can be implemented as one or more computer programs,i.e., one or more modules of computer program instructions encoded on atangible non transitory program carrier for execution by, or to controlthe operation of, data processing apparatus. The computer storage mediumcan be a machine-readable storage device, a machine-readable storagesubstrate, a random or serial access memory device, or a combination ofone or more of them.

The term “data processing apparatus” refers to data processing hardwareand encompasses all kinds of apparatus, devices, and machines forprocessing data, including, by way of example, a programmable processor,a computer, or multiple processors or computers. The apparatus can alsobe or further include special purpose logic circuitry, e.g., a centralprocessing unit (CPU), a FPGA (field programmable gate array), or anASIC (application specific integrated circuit). In some implementations,the data processing apparatus and/or special purpose logic circuitry maybe hardware-based and/or software-based. The apparatus can optionallyinclude code that creates an execution environment for computerprograms, e.g., code that constitutes processor firmware, a protocolstack, a database management system, an operating system, or acombination of one or more of them. The present disclosure contemplatesthe use of data processing apparatuses with or without conventionaloperating systems, for example Linux, UNIX, Windows, Mac OS, Android,iOS or any other suitable conventional operating system

A computer program, which may also be referred to or described as aprogram, software, a software application, a module, a software module,a script, or code, can be written in any form of programming language,including compiled or interpreted languages, or declarative orprocedural languages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment. A computer program may, butneed not, correspond to a file in a file system. A program can be storedin a portion of a file that holds other programs or data, e.g., one ormore scripts stored in a markup language document, in a single filededicated to the program in question, or in multiple coordinated files,e.g., files that store one or more modules, sub programs, or portions ofcode. A computer program can be deployed to be executed on one computeror on multiple computers that are located at one site or distributedacross multiple sites and interconnected by a communication network.While portions of the programs illustrated in the various figures areshown as individual modules that implement the various features andfunctionality through various objects, methods, or other processes, theprograms may instead include a number of submodules, third partyservices, components, libraries, and such, as appropriate. Conversely,the features and functionality of various components can be combinedinto single components as appropriate

The processes and logic flows described in this specification can beperformed by one or more programmable computers executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., a central processing unit (CPU), a FPGA (fieldprogrammable gate array), or an ASIC (application specific integratedcircuit

Computers suitable for the execution of a computer program include, byway of example, can be based on general or special purposemicroprocessors or both, or any other kind of central processing unit.Generally, a central processing unit will receive instructions and datafrom a read only memory or a random access memory or both. The essentialelements of a computer are a central processing unit for performing orexecuting instructions and one or more memory devices for storinginstructions and data. Generally, a computer will also include, or beoperatively coupled to receive data from or transfer data to, or both,one or more mass storage devices for storing data, e.g., magnetic,magneto optical disks, or optical disks. However, a computer need nothave such devices. Moreover, a computer can be embedded in anotherdevice, e.g., a mobile telephone, a personal digital assistant (PDA), amobile audio or video player, a game console, a Global PositioningSystem (GPS) receiver, or a portable storage device, e.g., a universalserial bus (USB) flash drive, to name just a few

Computer readable media (transitory or non-transitory, as appropriate)suitable for storing computer program instructions and data include allforms of non-volatile memory, media and memory devices, including by wayof example semiconductor memory devices, e.g., EPROM, EEPROM, and flashmemory devices; magnetic disks, e.g., internal hard disks or removabledisks; magneto optical disks; and CD ROM and DVD-ROM disks. The memorymay store various objects or data, including caches, classes,frameworks, applications, backup data, jobs, web pages, web pagetemplates, database tables, repositories storing business and/or dynamicinformation, and any other appropriate information including anyparameters, variables, algorithms, instructions, rules, constraints, orreferences thereto. Additionally, the memory may include any otherappropriate data, such as logs, policies, security or access data,reporting files, as well as others. The processor and the memory can besupplemented by, or incorporated in, special purpose logic circuitry

To provide for interaction with a user, implementations of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube), LCD (liquidcrystal display), or plasma monitor, for displaying information to theuser and a keyboard and a pointing device, e.g., a mouse or a trackball,by which the user can provide input to the computer. Other kinds ofdevices can be used to provide for interaction with a user as well; forexample, feedback provided to the user can be any form of sensoryfeedback, e.g., visual feedback, auditory feedback, or tactile feedback;and input from the user can be received in any form, including acoustic,speech, or tactile input. In addition, a computer can interact with auser by sending documents to and receiving documents from a device thatis used by the user; for example, by sending web pages to a web browseron a user's client device in response to requests received from the webbrowser.

The term “graphical user interface,” or GUI, may be used in the singularor the plural to describe one or more graphical user interfaces and eachof the displays of a particular graphical user interface. Therefore, aGUI may represent any graphical user interface, including but notlimited to, a web browser, a touch screen, or a command line interface(CLI) that processes information and efficiently presents theinformation results to the user. In general, a GUI may include aplurality of user interface (UI) elements, some or all associated with aweb browser, such as interactive fields, pull-down lists, and buttonsoperable by the business suite user. These and other UI elements may berelated to or represent the functions of the web browser.

Implementations of the subject matter described in this specificationcan be implemented in a computing system that includes a back endcomponent, e.g., as a data server, or that includes a middlewarecomponent, e.g., an application server, or that includes a front endcomponent, e.g., a client computer having a graphical user interface ora Web browser through which a user can interact with an implementationof the subject matter described in this specification, or anycombination of one or more such back end, middleware, or front endcomponents. The components of the system can be interconnected by anyform or medium of digital data communication, e.g., a communicationnetwork. Examples of communication networks include a local area network(LAN), a wide area network (WAN), e.g., the Internet, and a wirelesslocal area network (WLAN).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of anyinvention or on the scope of what may be claimed, but rather asdescriptions of features that may be specific to particularimplementations of particular inventions. Certain features that aredescribed in this specification in the context of separateimplementations can also be implemented in combination in a singleimplementation. Conversely, various features that are described in thecontext of a single implementation can also be implemented in multipleimplementations separately or in any suitable sub-combination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to a subcombination or variation of a sub-combination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be helpful. Moreover, the separation of various system modules andcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

Particular implementations of the subject matter have been described.Other implementations, alterations, and permutations of the describedimplementations are within the scope of the following claims as will beapparent to those skilled in the art. For example, the actions recitedin the claims can be performed in a different order and still achievedesirable results.

In some examples, a flight plan, modification to a flight plan, ormodified flight plan can include a set of instructions that areexecutable by a drone flight controller to control one or more flightcharacteristics (e.g., speed, direction, altitude, etc.) of a drone orsensor operations on a drone in accordance with the flight plan,modification to a flight plan, or modified flight plan.

As used herein, the term “real-time” refers to transmitting orprocessing data without intentional delay given the processinglimitations of a system, the time required to accurately obtain data andimages, and the rate of change of the data and images. In some examples,“real-time” is used to describe concurrently processing a drone flightdata as the drone executes a flight plan (e.g., while the drone isin-flight). Although there may be some actual delays, the delays aregenerally the data analysis results can be computed within sufficienttime such that the results remain relevant to aspects of the drone'sflight. For example, flight plan modifications calculated based on droneflight data are computed and transmitted to a drone before the drone'sflight progress renders the modifications irrelevant.

Accordingly, the above description of example implementations does notdefine or constrain this disclosure. Other changes, substitutions, andalterations are also possible without departing from the spirit andscope of this disclosure.

What is claimed is:
 1. A computer-implemented method for executing adrone flight plan from a drone flight control platform, the method beingexecuted by one or more processors and comprising: sending, by the oneor more processors, a flight plan for execution by a drone, the flightplan being adapted to a flight controller of the drone; receiving, bythe one or more processors, flight data from the drone while the droneis executing the flight plan; determining, by the one or moreprocessors, a modification to the flight plan based on the flight datareceived from the drone; and sending, by the one or more processors, themodification to the flight plan to the drone while the drone isexecuting the flight plan, such that the drone executes the flight planas modified by the modification.
 2. The method of claim 1, wherein theflight plan is agnostic to different types of drone flight controllers,and wherein the method further comprises converting the flight plan froman agnostic flight plan to a drone specific flight plan by adapting theagnostic flight plan to the flight controller of the drone, and whereinsending the flight plan for execution by the drone comprises sending thedrone specific flight plan to the drone.
 3. The method of claim 1,wherein the flight plan includes one or more of sensor operations for asensor package of the drone, a task, a plurality of waypoints, and aflight profile between waypoints.
 4. The method of claim 3, wherein theflight profile includes one or more of flight times between waypoints,drone speed between waypoints, drone altitude between waypoints, droneflight attitude, expected battery state's, sensor configurations, andsensor operations.
 5. The method of claim 1, further comprising:receiving pre-flight data; determining, based on the pre-flight data,that the drone cannot complete at least a portion of the flight plan;generating a modified flight plan based on the flight plan and thepre-flight data; and sending the modified flight plan to the drone. 6.The method of claim 5, wherein the pre-flight data includes one or moreof a location of the drone, battery status of the drone; environmentdata, and airspace data.
 7. The method of claim 1, further comprising:receiving other data that affects the drone flight plan; determining asecond modification to the flight plan based on third-party data; andsending the second modification to the flight plan to the drone whilethe drone is executing the flight plan, such that the drone executes theflight plan as modified by the second modification.
 8. The method ofclaim 7, wherein the other data includes one or more of weather data orairspace data.
 9. The method of claim 1, further comprising sending asecond flight plan for execution by a second drone, the second flightplan being adapted to a flight controller of the second drone, whereinthe flight plan and the second flight plan coordinate the flights of thedrone and the second drone within a location, and wherein the flightcontroller of the second drone is different from the flight controllerof the drone.
 10. The method of claim 9, wherein the second flight planis agnostic to different types of drone flight controllers, and whereinthe method further comprises converting the second flight plan from anagnostic flight plan to a second drone specific flight plan by adaptingthe agnostic flight plan to the flight controller of the second drone,and wherein sending the second flight plan for execution by the seconddrone comprises sending the second drone specific flight plan to thesecond drone.
 11. The method of claim 9, further comprising: determininga modification to the second flight plan based on the modification tothe flight plan; and sending the modification to the second flight planto the second drone while the second drone is executing the secondflight plan, such that the second drone executes the second flight planas modified by the modification to the second flight plan.
 12. Themethod of claim 1, wherein the flight data includes one or more ofbattery status, drone speed, drone altitude, drone location, and sensordata.
 13. The method of claim 1, wherein the modification to the flightplan includes adding or removing a waypoint.
 14. The method of claim 1,wherein the modification to the flight plan includes altering ageographic location of a waypoint.
 15. The method of claim 1, whereinthe modification to the flight plan includes altering a flight profilebetween waypoints.
 16. The method of claim 1, further comprisingproviding, for display to a user and concurrent with the drone executingthe flight plan, a graphical interface including a representation of atleast a portion of the flight data from the drone.
 17. The method ofclaim 16, wherein the representation includes a representation of one ormore of a location of the drone, a battery status of the drone, a speedof the drone, and sensor data from the drone.
 18. A drone flight controlplatform comprising: at least one processor; and a data store coupled tothe one or more processors having instructions stored thereon which,when executed by the at least one processor, causes the one or moreprocessors to perform operations comprising: sending a flight plan forexecution by a drone, the flight plan being adapted to a flightcontroller of the drone; receiving flight data from the drone while thedrone is executing the flight plan; determining a modification to theflight plan based on the flight data received from the drone; andsending the modification to the flight plan to the drone while the droneis executing the flight plan, such that the drone executes the flightplan as modified by the modification.
 19. The drone flight controlplatform of claim 18, wherein the flight plan is agnostic to differenttypes of drone flight controllers, and wherein the method furthercomprises converting the flight plan from an agnostic flight plan to adrone specific flight plan by adapting the agnostic flight plan to theflight controller of the drone, and wherein sending the flight plan forexecution by the drone comprises sending the drone specific flight planto the drone.
 20. The drone flight control platform of claim 18, whereinthe flight plan includes one or more of sensor operations for a sensorpackage of the drone, a task, a plurality of waypoints, and a flightprofile between waypoints.